我添加了这个函数来重写wordpress中的一些规则:
add_action( 'init', 'my_add_rewrite_rules' );
function mydid_add_rewrite_rules() {
global $wp_rewrite;
add_rewrite_rule(....);
.... Added some rewrite rules here...
$wp_rewrite->flush_rules();
}
到目前为止,一切都很完美。
浏览 url 后,我认为包含重写规则的数据库已更新,并且我已注释了该行:
// commented the line because this is an "expensive" action and I suppose that the
// database is already updated
// $wp_rewrite->flush_rules();
但是,在评论后,url重写不起作用。为什么?数据库不是已经更新了吗?
附言由于某些主题的限制,我无法从 wp 管理面板刷新......
谢谢
好的,发现了问题...
在其他地方还有另一个"刷新重写规则",它实际上覆盖了数据库。我也评论了它,现在一切正常。
尝试使用不同的钩子进行重写和刷新:
function mydid_add_rewrite_rules() {
global $wp_rewrite;
// add_rewrite_rule(....);
// .... Added some rewrite rules here...
}
add_action( 'generate_rewrite_rules', 'mydid_add_rewrite_rules' );
function mydid_flush_rewrite_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action( 'init', 'mydid_flush_rewrite_rules');
我找到的解决方案是这样的:
global $wp_rewrite;
$wp_rewrite->flush_rules();
$wp_rewrite->init();