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

问题:我无法在生产站点中停用这些插件,可以将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');         
}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章