0

我添加了这个函数来重写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重写不起作用。为什么?数据库不是已经更新了吗?

ps 由于某些主题的限制,我无法从 wp 管理面板中刷新...

谢谢

4

3 回答 3

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');
于 2013-10-06T03:30:07.180 回答
1

好的,找到问题了...

在其他地方还有另一个“刷新重写规则”,它实际上覆盖了数据库。我也评论了它,现在一切正常。

于 2013-10-08T04:11:51.570 回答
0

我找到的解决方案是这样的:

global $wp_rewrite;
$wp_rewrite->flush_rules();
$wp_rewrite->init();
于 2015-04-20T07:01:40.743 回答