WordPress:is_paged()在functions.php过滤函数中失效的求助
解决WordPress中is_paged()移除Rank Math头部动作失效的问题
你的问题核心是钩子挂载时机不对——is_paged()这类条件标签依赖WordPress主查询的初始化状态,如果函数挂在init这类过早的钩子上,此时分页状态还未被系统识别,自然无法触发移除逻辑。
修正方案
将函数挂载到template_redirect钩子,这个钩子会在WordPress完成主查询、确定要加载的模板后触发,所有条件标签(包括is_paged())都能正常返回结果:
function rankmath_disable_features() { // 单篇文章页面移除Rank Math头部动作 if ( is_singular( 'post' ) ) { remove_all_actions( 'rank_math/head' ); } // 分页页面移除Rank Math头部动作 if ( is_paged() ) { remove_all_actions( 'rank_math/head' ); } } add_action( 'template_redirect', 'rankmath_disable_features' );
替代方案:用wp_head钩子(需调整优先级)
如果更倾向于在页面头部阶段处理,只需把函数的优先级设得比Rank Math默认优先级(1)更高,确保在Rank Math添加动作之后执行移除操作:
add_action( 'wp_head', 'rankmath_disable_features', 2 );
快速验证方法
可以在函数中临时加入调试代码,确认is_paged()的返回值是否正确:
function rankmath_disable_features() { var_dump(is_paged()); // 查看分页状态是否被正确识别 // 原有逻辑... }
内容的提问来源于stack exchange,提问作者Ivana Murray
相关产品推荐
相关产品推荐

