【问题标题】:Wordpress Basic Custom Rewrite RuleWordpress 基本自定义重写规则
【发布时间】:2011-11-30 03:07:00
【问题描述】:

我很抱歉这个直截了当的问题在这个网站上已经被回答了无数次了,但我不明白为什么我的重写规则没有生效。

这是我的代码:

add_action('init', 'update_rewrite_rules');
function update_rewrite_rules(){
    add_rewrite_rule('^org/([^/]+)', 'index.php?pagename=about-us&org=$matches[1]', 'top');
    add_rewrite_tag('%org%', '[0-9]+');
}

据我了解,这应该将“myurl.com/org/13”转换为“myurl.com/index.php?pagename=about-su&org=13”。我做错了什么???

我可以将它写入 .htaccess 文件就好了,但是,当然,我遇到了 Wordpress 的自定义 PHP 重写功能取代我的代码的问题,所以只找到了变量,而不是页面。

无论如何,如果您有任何建议或问题,我们将不胜感激!谢谢。

【问题讨论】:

    标签: php wordpress .htaccess mod-rewrite


    【解决方案1】:

    我相信您必须在实际的重写规则之前注册您的查询变量。另外,正如Wordpress Rewrite API 中所述,只有在刷新新规则并重新生成缓存后,它才会识别新规则。

    //Ensure the $wp_rewrite global is loaded
    global $wp_rewrite;
    //Call flush_rules() as a method of the $wp_rewrite object
    $wp_rewrite->flush_rules();
    

    请注意,出于性能原因,您不应在每次请求时都执行此操作,而应仅在您的插件激活时执行。

    add_action('admin_init', 'flush_rewrite_rules');
    

    还有另一种添加自定义重写规则的方法,如Custom Quesries 中所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多