我正在开发一个可湿性粉剂插件,其中我有一个名为我的帐户的可湿性粉剂页面,但我还有一些类似帐户编辑、帐户杂项等的子页面。。。所以我想这样称呼这些页面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 template结果:
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 loaded,但结果是
Array ( [pagename] => my-account ) 不返回“帐户杂项”
所以我无法检查哪一页等。。。
最合适的回答,由SO网友:Milo 整理而成
很接近了,传递页面slug的查询变量是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\'
);