My-accountというWPページを持つWPプラグインを開発していますが、account-edit、account-miscなどの子ページがいくつかあります。だから私はこのようにこれらのページを呼び出したいと思います mydomain.com/my-account/account-edit および mydomain.com/my-account/account-misc WPページを作成せずにこれを行う方法を知っているので、私はいくつかのadd_rewrite_rule
を試しましたが、それは私が期待したようには動作しません。
これが私の最新のコードです。
add_filter('query_vars', 'add_account_edit_var', 0, 1);
function add_account_edit_var($vars){
$vars[] = 'account-edit';
return $vars;
}
add_action( 'init', 'add_account_edit_rule' );
function add_account_edit_rule() {
add_rewrite_rule(
'^my-account/account-edit([^/]*)/?',
'index.php?pagename=my-account&account-edit',
'top'
);
}
その作業は全く問題なく、私はURL my-account/account-edit/Pageテンプレートの結果を呼び出しました: Array([pagename] => my-account [account-edit] =>)
もう一度書き直しました:
add_filter('query_vars', 'add_account_misc_var', 0, 1);
function add_account_misc_var($vars){
$vars[] = 'account-misc';
return $vars;
}
add_action( 'init', 'add_account_misc_rule' );
function add_account_misc_rule() {
add_rewrite_rule(
'^my-account/account-misc([^/]*)/?',
'index.php?pagename=my-account&account-misc',
'top'
);
}
テンプレートページでは動作しません、私はロードされたURL my-account/account-misc/pageを呼び出しましたが、結果は Array([pagename] => my-account) は "account-misc"を返しません
だから私はどのページなどを確認することはできません...
ページスラッグを渡すためのクエリvarはpagename
です。
add_filter('query_vars', 'add_account_edit_var', 0, 1);
function add_account_edit_var($vars){
$vars[] = 'account-edit';
return $vars;
}
add_action( 'init', 'add_account_edit_rule' );
function add_account_edit_rule() {
add_rewrite_rule(
'^my-account/([^/]*)/?',
'index.php?pagename=my-account&account-edit',
'top'
);
}
ルール内の値を取り込むには、値を$matches[1]
に渡す必要があります。
add_rewrite_rule(
'^my-account/([^/]*)/?',
'index.php?pagename=my-account&account-edit=$matches[1]',
'top'
);