想在页头摘掉插件输出的 meta,remove_action 写在 functions.php 顶部,页面里那段标签还在,函数也没报错。乍看像缓存或者权限的锅,追下去往往不是。
add_action('wp_loaded', function () {
remove_action('wp_head', 'plugin_meta', 10);
});
var_dump(has_action('wp_head', 'plugin_meta'));
追下去是这么回事:remove_action 必须与 add_action 用的优先级完全一致,还要等对方注册完成后再执行,挂得太早根本找不到目标回调。
「remove_action 失效」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,先确认插件注册这个钩子时用的优先级数字;把移除代码挂到 wp_loaded 或同优先级之后;用 has_action 的返回值确认是不是真的摘掉了。
验收就看一点,页面源码里不再出现那段标签,其他页头输出不受影响。