关于 remove_action('wp_head','') 某些情况下不生效的问题

今天在WordPress中,遇到几位抽象的BUG,在某些情况下 remove_action() 函数不能顺利移除 Hook。

具体代码为

add_action('wp_head', 'krjojotest', 12);
function krjojotest()
{
  echo '<link rel="kkkkkkkkkkkkkk" href="www.krjojo.com">';
}

操作内容:在head头添加测试用link。

按正常逻辑下,使用 remove_action() 函数可以移除,如下

add_action('wp_loaded', function () {
  remove_action('wp_head', 'krjojotest');
});

但是同时执行上面两段代码后,会发现 <link rel="kkkkkkkkkkkkkk" href="www.krjojo.com"> 头依旧存在。

最后发现如果想要正确移除 krjojotest 的Hook,则需要修改成这样

add_action('wp_loaded', function () {
  remove_action('wp_head', 'krjojotest', 12);
});

最后一个12,代表priority参数为12,也就是执行优先级,需要跟 add_action() 函数中的优先级一致

官方文档可以看到这样一句话:

The exact priority used when adding the original action callback.

添加原始操作回调时使用的确切优先级。

为什么要确切优先级?难道PHP的函数名还能重复吗......抽象

© 版权声明
分享是一种美德,转载请保留原链接
THE END

文章不错?点个赞呗
点赞 0

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部