14
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Wordpress リライトルール

Last updated at Posted at 2016-09-16

通常のパーマリンク設定では実現しない時に、このアドレスでアクセスした時に、このURLにアクセスするというようなリライト設定をする。

通常のリライト

こちらの場合管理画面上のパーマリンクの設定で保存をし直す必要がある

functions.php
add_rewrite_rule('posttype/([^/]+)/([^/]+)/?$', 'index.php?category_name=$matches[1]', 'top');

rewrite_rules_arrayで設定

複数のリダイレクト設定をする場合はこっちのが手っ取り早いかも
管理画面でのパーマリンク設定で保存をする必要はない。

functions.php
add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');

// ルールを追加するときはflush_rules()を忘れないように
function flushRules(){
	global $wp_rewrite;
   	$wp_rewrite->flush_rules();
}

// 新しいルールを追加
function wp_insertMyRewriteRules($rules)
{
	$newrules = array();
	$newrules['(project)/([^/]+)/?$'] = 'index.php?post_type=project&project_categoy=$matches[1]';
	return $newrules + $rules;
}

// 変数idを追加して、WordPressが認識できるようにする
function wp_insertMyRewriteQueryVars($vars)
{
    array_push($vars, 'id');
    return $vars;
}

下記の設定は特に変える必要はないみたい。

functions.php
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');

下記の関数にルールを記述するとよいらしい。

functions.php
add_filter('rewrite_rules_array','wp_insertMyRewriteRules');

リライトのルールの設定は基本的には正規表現を利用してリライトを指せる
() -> $matches[n] で引っ張れるのでまんま正規表現的に飛ばせる。

functions.php
// 編集するのはこの部分
$newrules['(project)/([^/]+)/?$'] = 'index.php?post_type=project&project_categoy=$matches[1]';

// 条件を増やしたいときはそのまま増やす。
$newrules['(project)/([^/]+)/?$'] = 'index.php?post_type=project&project_categoy=$matches[1]';
$newrules['(company)/([^/]+)/?$'] = 'index.php?post_type= company& company_categoy=$matches[1]';

// 配列でやっているので連想配列的に書くのもOK
$newrules = array(
  '(project)/([^/]+)/?$' => 'index.php?post_type=project&project_categoy=$matches[1]',
  '(company)/([^/]+)/?$' => 'index.php?post_type=company&company_categoy=$matches[1]',
);

まとめ

wordpressで思った通りのPathにならなかった場合はこういうふうにでも一応Pathを通すことができる
できる限りは、defaultでやったほうが、今後のカスタマイズ性能上がるのだろうけどもね。

14
23
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?