WordPress 和 flush_rules

Wordpress and flush_rules

我有一个站点,其中包含多个自定义重写规则,如下所示:

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 也不鼓励在初始化时触发它(与提供的示例不同)。我应该在哪个钩子上开火有点宽。经过一些研究发现最好的时间是在插件激活上。

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

一如既往,谢谢你们。

我注释掉了 $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');         
}

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