WordPress 中的重写规则在刷新后不会更新


rewrite rules in wordpress are not updated after flushing

我添加了这个函数来重写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();