[WordPress General] rewrite_rules_array を利用してリライトルールを追加する方法
add_rewrite_rule
ではなく rewrite_rules_array
を利用する方法を知ったので memo.
先のルールが優先するので、既存ルール $rules
の前に新しいルールをセットします。
下記では /foo/[slug]
の URL にアクセスすると /[slug]
の内容が表示されるようなります。
function myUrlRewrite( $rules ) {
$newRules = array();
$newRules['^foo/([^/]+)/?$'] = 'index.php?pagename=$matches[1]';
return $newRules + $rules;
}
add_filter( 'rewrite_rules_array', 'myUrlRewrite' );
有効化するためには「ダッシュボード>設定>パーマリンク設定」で一度保存します。
ビューテンプレートで $wp_rewrite
をダンプしたりすると、ルールが追加されていることを確認できます。
<?php
echo '<pre>';
var_dump( $wp_rewrite );
echo '</pre>';
?>
補遺
add_rewrite_rule