今天在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