我很抱歉这个直截了当的问题在本网站上无数次被无数次回答,但我无法弄清楚为什么我的重写规则没有生效。
这是我的代码:
add_action('init', 'update_rewrite_rules');
function update_rewrite_rules(){
add_rewrite_rule('^org/([^/]+)', 'index.php?pagename=about-us&org=$matches[1]', 'top');
add_rewrite_tag('%org%', '[0-9]+');
}
据我了解,这应该将“myurl.com/org/13”转换为“myurl.com/index.php?pagename=about-su&org=13”。我做错了什么???
我可以将它写入.htaccess文件中,但是,当然,我遇到了Wordpress'自定义PHP重写函数取代我的代码的问题,所以只找到变量,但不是页面。
无论如何,任何值得思考的建议或问题都将受到赞赏!感谢。
答案 0 :(得分:1)
我相信你必须在实际的重写规则之前注册你的查询变量。此外,如Wordpress Rewrite API中所述,只有在刷新新缓存并重新生成缓存后,它才会识别新规则。
//Ensure the $wp_rewrite global is loaded
global $wp_rewrite;
//Call flush_rules() as a method of the $wp_rewrite object
$wp_rewrite->flush_rules();
请注意,出于性能原因,您不应该仅在插件激活时执行此操作。
add_action('admin_init', 'flush_rewrite_rules');
还有另一种添加自定义重写规则的方法,如Custom Quesries中所述。