🐣 [WP] リライトルールの備忘録
作成日: 2022/02/14
1

いつも忘れるリライトルールの追加や変更。。。

デバッグ

登録されているリライトルールを確認

<pre><?php var_dump( get_option('rewrite_rules') ); ?></pre>

ページごとにデバッグするプラグイン: Debug Bar

リライトルールの追加

例) ドメイン/カスタム投稿名/投稿ID

function addRewriteRules($rules){
 $new_rule = array(
  'information/([0-9]+)/?$' => 'index.php?post_type=information&p=$matches[1]',
  'pressrelease/([0-9]+)/?$' => 'index.php?post_type=pressrelease&p=$matches[1]',
 );
 //ルール配列に結合
 return $new_rule + $rules;
}
add_filter('rewrite_rules_array', 'addRewriteRules');

リライトルールの書き換え

function add_date_base($rewrite_rules){
    $r = array();
    while(list ($key, $val) = each($rewrite_rules)) {
        $r[str_replace('post/', 'date/', $key)] = $val;
    }
    return $r;
}
add_filter('date_rewrite_rules', 'add_date_base');

(参考:https://penguinlab.jp/blog/post/1164)

テンプレートで吐き出されるリンク先を変更

下記は post_type/投稿id のURLに変えてる。

function generateCustomPostLink($link, $post){
 if($post->post_type === 'information'){
  return home_url('/information/'.$post->ID);
 } elseif($post->post_type === 'pressrelease'){
	return home_url('/pressrelease/'.$post->ID);
 } else {
  return $link;
 }
}
add_filter('post_type_link', 'generateCustomPostLink', 1, 2);

リンク関連のフィルターフック

http://wpdocs.osdn.jp/プラグイン_API/フィルターフック一覧#.E3.83.AA.E3.83.B3.E3.82.AF.E9.96.A2.E9.80.A3.E3.81.AE.E3.83.95.E3.82.A3.E3.83.AB.E3.82.BF.E3.83.BC
例えば、カスタム投稿のパーマリンクを変えたいなら post_type_link にフック、
年別アーカイブ関連なら year_link にフック、など。


制作会社でフロントのコーディングやWordpressのテーマ開発をしてます。 本命はJavascriptです😋 目指せフロントエンドエンジニア👊