私は何時間もこれにこだわっていて、これらすべての異なる方法を試しましたが、どれもうまくいかないようです。私は同じような問題を抱えている他のスレッドを見ましたが、解決策は私のために働いていません。誰かが手助けできることを願っています。
パーマリンクを使ったカスタムテンプレートのページがあります
example.com/central
このページはクエリ変数を受け付けます。
example.com/central/?information=people
私は人々が入力したときに動作するようにカスタム書き換えルールを取得しようとしています
example.com/central/information/people
それは何を表示します
example.com/central/?information=people
します。
現在私のテンプレートfunctions.phpにあります
function add_query_vars_filter( $vars ){
$vars[] = "information";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
function custom_rewrite_tag() {
add_rewrite_tag('%information%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);
function custom_rewrite()
{
add_rewrite_rule('^(.+)/information/(.+)/?$','index.php?p=64476&information=$matches[2]','top');
}
add_action('init', 'custom_rewrite');
私が訪れたとき
example.com/central/information/people
私はとられるだけです
example.com/central/
私の2番目の問題は、p = 64476がハードコーディングされているということです、どうやって$ matchesからIDを取得するのですか[1]。
これを試してください、私は簡単なテストをしました、そして、それは私のために働きました。 central
というページを作成しました。
このコードを挿入した後に書き換えルールをフラッシュすることを忘れないでください。
add_filter( 'query_vars', 'query_vars' );
function query_vars( $vars )
{
array_Push($vars, 'information');
return $vars;
}
add_action( 'rewrite_rules_array', 'rewrite_rules' );
function rewrite_rules( $rules )
{
$newrules = array();
$newrules[ 'central/information/people/?$' ] = 'index.php?pagename=central&information=people';
return $newrules + $rules;
}
書き換えエンドポイントを追加します 書き換えルールとクエリ変数の代わりに/。このAPI関数はあなたに代わってこれら両方を行います。
function wpd_add_my_endpoint(){
add_rewrite_endpoint( 'information', EP_PAGES );
}
add_action( 'init', 'wpd_add_my_endpoint' );
どのページでも最後にinformation
を追加することができ、その値はget_query_var('information')
を介して利用可能になります。