Intercepting a add_action

时间:2018-05-24 作者:Rick Hellewell

假设其他插件或主题使用add\\u操作挂钩。有没有办法确定某个特定的钩子是否被其他人使用?

示例:假设插件具有以下代码

add_action ( \'publish_post\', \'myCustomFunction\' );
function myCustomFunction() {
   // does something
}
我的插件能否“查找”到“publish\\u post”中使用该挂钩?我能在它启动之前移除那个特定的动作钩吗?

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

您可以使用has_action(). 如果钩子存在,则返回钩子的优先级,否则返回false. 因此,请检查优先级是否不等于false (而不仅仅是假y或被0 将显示为false),然后使用该选项移除挂钩。

$priority = has_action( \'publish_post\', \'myCustomFunction\' );

if ( $priority !== false ) {
    remove_action( \'publish_post\', \'myCustomFunction\', $priority );
}
还有has_filter(), 做了完全相同的事情(has_action() 只是打电话而已has_filter()).

结束