WordPress最新更新后自定义元描述插件失效排查
WordPress更新后wp_head钩子失效的排查与解决
确认主题header文件里有
wp_head()调用
这是wp_head钩子触发的核心前提,要是主题更新后把这行删了或者注释了,所有绑定的动作都跑不起来。打开主题的header.php(块主题找对应的header模板),确保</head>标签前有<?php wp_head(); ?>这行代码。检查动作是否被意外移除
在你的add_action代码后面加个调试,看看动作有没有绑定成功:add_action('wp_head', 'oa_set_custom_meta_description'); // 打印动作状态,看是否绑定成功 var_dump(has_action('wp_head', 'oa_set_custom_meta_description'));如果输出
bool(false),说明有其他插件或主题用remove_action甚至remove_all_actions把你的动作删了。搜一下全站代码里的remove_action('wp_head',找到对应代码调整,或者给你的动作设个特殊优先级避开冲突。调整钩子优先级
默认优先级是10,试试用更高(比如1)或更低(比如999)的优先级绑定:// 最高优先级,优先执行 add_action('wp_head', 'oa_set_custom_meta_description', 1); // 或者最低优先级,最后执行 add_action('wp_head', 'oa_set_custom_meta_description', 999);确认插件代码的加载时机
别让你的add_action被is_admin()这类条件判断包起来,不然前台页面根本不会执行绑定。要是代码放在子文件里,确保子文件在wp_head触发前已经加载。也可以把绑定代码放在plugins_loaded钩子里,确保WP初始化完再绑定:add_action('plugins_loaded', function() { add_action('wp_head', 'oa_set_custom_meta_description'); });开调试日志追踪执行情况
在wp-config.php里开启调试:define('WP_DEBUG', true); define('WP_DEBUG_LOG', true);然后在你的函数里加日志:
function oa_set_custom_meta_description() { error_log('oa_set_custom_meta_description函数已执行'); $custom_meta_description = get_option('oa_custom_meta_description', ''); if (!empty($custom_meta_description)) { echo '<meta name="description" content="' . esc_attr($custom_meta_description) . '">'; } }去wp-content/debug.log里看日志,如果有那条执行记录,说明函数跑了但echo内容被过滤或缓冲;要是没记录,说明函数根本没被调用,回头查前面的步骤。
内容的提问来源于stack exchange,提问作者Nate Hartway
相关产品推荐
相关产品推荐

