【问题标题】:Wordpress and flush_rulesWordPress 和 flush_rules
【发布时间】:2016-12-04 07:52:51
【问题描述】:

我有一个网站有几个这样的自定义重写规则:

add_action('init', array($this, 'add_my_rewrite') );

public function add_my_rewrite() {

    add_rewrite_tag('%get-continent%','([^&]+)');

    global $wp_rewrite;
    $wp_rewrite->add_rule('something/([^/]*)/?','index.php?page_id=12345&get-continent=$matches[1]','top');         
    $wp_rewrite->flush_rules(false);
}

我从旧的 codex 示例中复制了它并在此处搜索。他们都工作正常,但他们在数据库上做了很多更新。

在做了一些研究后,我发现 codex 也不鼓励在 init 上触发它(与提供的示例不同)。我应该在哪个钩子上发射它有点宽泛。经过一番研究,似乎最好的时间是插件激活。

问题:我无法在 prod 站点中停用这些插件,我可以将“init”替换为其他 es。插件激活(还不确定什么是钩子)但是如果我将其注释掉,这些规则会起作用吗?除了激活插件之外,我是否必须在其他时间触发它?它不会被意外覆盖吗?由于我不会激活或停用插件,我可以简单地注释掉 add_action 吗?

一如既往,谢谢你们。

【问题讨论】:

  • 是的,您可以注释掉刷新重写规则。无论如何,您实际上可以手动刷新重写规则,当您在管理员端保存永久链接设置时会发生这种情况。

标签: wordpress flush rules


【解决方案1】:

我注释掉了 $wp_rewrite->flush_rules(false);部分,我不得不离开这个:

add_action('init', array($this, 'add_my_rewrite'), 10, 0);

函数变成了:

public function add_my_rewrite() {

    add_rewrite_tag('%get-continent%','([^&]+)');

    global $wp_rewrite;
    $wp_rewrite->add_rule('something/([^/]*)/?','index.php?page_id=12345&get-continent=$matches[1]','top');         
}

它工作得很好,理想情况下我必须在激活时触发刷新,或者最终只是进入设置/永久链接并点击保存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2010-11-30
    • 2010-10-21
    • 2019-04-27
    • 2015-01-22
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多