カスタムページテンプレートにvarを渡すための書き換え規則を追加しようとしています。
奇妙な理由でそれは変数の中の数字だけを除いて、私が数字以外の文字をタイプするときそれは404
に向かいます。
これは動作します:http://example.com/reco/9080
http://example.com/reco/abcd
(404
にリダイレクト)
これは私のコードです:
function add_rewrite_rules($wp_rewrite) {
add_rewrite_rule('reco/([^/]*)/?', 'index.php/reco/?b=$1', 'top');
}
add_action('generate_rewrite_rules', 'add_rewrite_rules');
function query_vars($public_query_vars) {
$public_query_vars[] = "b";
return $public_query_vars;
}
add_filter('query_vars', 'query_vars');
index.php/reco/?b=$1
の代わりに、これを試してください:
"$wp_rewrite->index?pagename=reco&b=" . $wp_rewrite->preg_index( 1 )
また、ルールが先頭だけではなくパス全体にのみ一致するように、reco/([^/]*)/?
正規表現に$
を追加する必要があります。
その後、後でルールをフラッシュします(パーマリンク設定をadminに再保存するだけです)。
更新:代わりにpage_rewrite_rules
フィルターを使ってみて、get_query_var( 'b' )
を使ってください。
function wpse_139259_page_rules( $rules ) {
return array(
'reco/([^/]+)/?$' => 'index.php?pagename=reco&b=$matches[1]',
) + $rules;
}
add_filter( 'page_rewrite_rules', 'wpse_139259_page_rules' );