我添加了这个函数来重写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();
}
到目前为止,一切都很完美。
浏览网址后,我认为包含重写规则的数据库已更新,我已评论该行:
// commented the line because this is an "expensive" action and I suppose that the
// database is already updated
// $wp_rewrite->flush_rules();
然而,在评论之后,网址重写不起作用。 为什么? 数据库是否已经更新?
P.S。由于某些主题的约束,我无法从wp管理面板中刷新...
由于
答案 0 :(得分:1)
尝试使用不同的钩子来重写&冲洗:
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');
答案 1 :(得分:1)
好的,发现了问题...
在其他地方还有另一个“刷新重写规则”,它实际上覆盖了数据库。我也对它进行了评论,现在一切正常。
答案 2 :(得分:0)
我找到的解决方案是:
global $wp_rewrite;
$wp_rewrite->flush_rules();
$wp_rewrite->init();