【问题标题】:rewrite rules in wordpress are not updated after flushing刷新后不更新wordpress中的重写规则
【发布时间】:2013-10-12 16:41:17
【问题描述】:

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

但是,评论后,url重写不起作用。 为什么? 数据库不是已经更新了吗?

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

谢谢

【问题讨论】:

    标签: php wordpress url url-rewriting


    【解决方案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');
    

    【讨论】:

    • 感谢您的回答。 “add_action('init','mydid_flush_rewrite_rules');”每次“init”发生时都会刷新规则,不是吗?我想避免每次都冲水,因为它很贵。附言我只想在手动更新一些规则后刷新->因此数据库已更新->然后注释'$wp_rewrite->flush_rules();'直到下次我想在代码中手动更改一些规则......
    • 然后将$wp_rewrite->flush_rules(); 添加到更新数据库的函数中,或者在您进行重写更改后手动重新保存设置->永久链接中的永久链接结构。
    • 没有 $wp_rewrite->flush_rules();更新数据库?看我的初始功能...不应该更新吗?如果它已更新,为什么在我评论它之后它不起作用......?谢谢
    【解决方案2】:

    好的,找到问题了……

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

    【讨论】:

      【解决方案3】:

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

      global $wp_rewrite;
      $wp_rewrite->flush_rules();
      $wp_rewrite->init();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-11
        • 2012-11-21
        • 2023-03-27
        • 2012-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多