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

时间:2013-04-11 14:54:04

标签: wordpress url-rewriting rewrite

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

example.com/people/?name=FirstLast

我想要的是:

example.com/people/FristLast

我知道我需要使用add_rewrite_rule和add_rewrite_tag调用,但我不确定如何实现我想要的结果。我试过这个但是我得到了一个php错误:

add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
add_rewrite_tag('%name%','([^&]+)');

我得到的错误是:“致命错误:在非对象上调用成员函数add_rule()”

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

谢谢!

2 个答案:

答案 0 :(得分:6)

add_action( 'init', 'addMyRules' );
function addMyRules(){
    add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
    add_rewrite_tag('%name%','([^&]+)');
}

答案 1 :(得分:0)

您应该在操作挂钩中调用add_rewrite_rule,如下所示:

add_action('init', 'wpa8715_intit');

function wpa8715_intit() {
    add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
    add_rewrite_tag('%name%','([^&]+)');
}