为此创建一个页面,您可以稍后过滤其内容,除非您以其他方式工作。
将页面ID添加到重写规则初始化函数:
add_action(\'init\', function() {
$page = get_post( 2 ); // replace 2 with page ID
add_rewrite_rule(
\'([^/]+)/([^/]+)/?$\',
\'index.php?pagename=\' . $page->post_name . \'&my_param_1=$matches[1]&my_param_2=$matches[2]\',
\'top\'
);
});
将查询变量附加到主查询:
add_filter(\'query_vars\', function($vars) {
$vars[] = "my_param_1";
$vars[] = "my_param_2";
return $vars;
});
现在应该完成了,您需要使用以下两种方法刷新重写规则
flush_rewrite_rules()
连接到
init
或
wp
, 或者转到“设置”>“永久链接”,然后单击底部的“保存”按钮。
现在进行测试>http://example.com/john/smith/
:
// first param
echo var_dump( get_query_var( \'my_param_1\' ) ); // john
// second param
echo var_dump( get_query_var( \'my_param_2\' ) ); // smith
我希望你能像我在本地安装时那样工作。
编辑:如果您将参数设置在页面名称之后,如$page->post_name . \'/([^/]+)/([^/]+)/?$\'
所以你得到/sample-page/john/smith/
这样,您就不会对现有内容产生任何冲突,WordPress将在传递到插件之前首先为现有内容提供服务,或者在第一个参数slug之前添加一个唯一的前缀。我只是这么想。