为内置钩子调用do_action和Apply_Filters是否安全?

时间:2018-04-07 作者:Philippe Signoret

我正在开发一个插件,它需要复制一些内置的WordPress逻辑。(此逻辑不能用任何内置方法调用,也不能独立连接到。)

在这个动作序列中,WordPress的正常行为是调用动作挂钩(do_action(\'wp_login\', ...)) 和过滤器挂钩(apply_filters(\'login_redirect\', ...)).

如果在对应于在Core中调用它们的时间点调用它们,那么直接从我的插件调用这些内置钩子是否安全(并且是可以接受的做法)?或者,其他与此相关的开发人员期望在非常特定的时间执行操作的风险是否太大?

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

我认为这两者之间有区别do_actionapply_filters.

do_action 通常会触发全局状态更改,包括输出、资源排队、模块初始化等。这就像任何影响全局状态的东西一样,如果脱离上下文使用,可能会产生令人惊讶的副作用。

apply_filters OTOH的行为更像是一个函数调用,如果编写得当,无论何时“调用”它,都应该返回相同的结果。

不过,插件的质量各不相同(就在几个小时前,有人问起一个使用eval :(),因此您的实施策略最终将取决于编码技能—大约5美元/小时的开发人员复制粘贴他在internet上找到的代码片段。您需要对主流插件进行适当的测试,以确保您的代码至少与主流插件一起工作。

结束

相关推荐