Flush_rewrite_rules()是否删除由其他插件添加的所有规则以及我的插件添加的所有规则?

时间:2016-06-02 作者:jsherk

我正在开发一个插件,并在插件激活期间使用add\\u rewrite\\u规则和flush\\u rewrite\\u规则。

在插件停用时,我使用just flush\\u rewrite\\u规则删除我添加的规则。

现在让我们假设另一个插件也添加了重写规则。即使其他插件仍然处于活动状态,调用flush\\u rewrite\\u规则也不会删除其他插件的重写规则吗?

编辑:

需要记住的注意事项:

  • flush_rules() 是否与相同flush_rewrite_rules(). 请参见米洛在其公认答案下方的评论。

    bug tracker中存在问题https://core.trac.wordpress.org/ticket/29118 这显示了最佳实践,但也显示了必须使用INIT来连续添加规则的问题。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

这就是为什么需要在init 对每个请求以及插件激活执行操作。

当您的插件停用挂钩运行时,其他插件init 钩子已经运行,所以它们的规则存在于全局变量中,该变量在每个请求的生命周期中存储它们。

刷新重写规则会清空长期存储规则的选项,然后使用该全局变量中的任何内容重新填充该选项。