使用ADD_REWRITE_RULE删除(问号)的正确方法是什么?

时间:2013-04-11 作者:dcp3450

我有一个名为“People”的页面,其中包含一个自定义模板,该模板包含一个名为name的变量:

实例com/人/?名称=FirstLast

我想要的是:

实例com/人/FristLast

我知道我需要使用add\\u rewrite\\u规则和add\\u rewrite\\u标记调用,但我不确定如何实现我想要的结果。我尝试过这个方法,但遇到了一个php错误:

add_rewrite_rule(\'^people/([^/]*)/?\',\'index.php?name=$matches[1]\',\'top\');
add_rewrite_tag(\'%name%\',\'([^&]+)\');
我得到的错误是:“致命错误:对非对象调用成员函数add\\u rule()”

我想我走的路是对的。我对WP非常了解,但这是我第一次尝试重写规则。

谢谢

-----编辑------我已经更新了代码。我不再出错,但什么也没发生

function rewrite_rule_people() {
    global $wp_rewrite;
    add_rewrite_tag(\'%name%\',\'([^/]*)\');
    add_rewrite_rule(\'^people/([^/]*)\',\'index.php?page_id=42602&name=$matches[1]\',\'top\');
    $wp_rewrite->flush_rules();
}
add_action( \'init\', \'rewrite_rule_people\' );
去/人/?name=JohnSmith不会将url更改为/people/JohnSmith

1 个回复
最合适的回答,由SO网友:Rajeev Vyas 整理而成

您需要使用“人员”页面的页面id。如果我假设它是12,那么这个就可以了,

add_rewrite_rule(\'^people/([^/]*)/?\',\'index.php?page_id=12&name=$matches[1]\',\'top\');

结束