You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress插件调用含Woocommerce条件判断的函数应使用哪个钩子?

问题根本原因

你遇到的条件判断失效问题确实和钩子触发顺序直接相关:is_product()、is_cart()这类WooCommerce条件标签本质是依赖WordPress核心的主查询(Main Query)结果实现的,而woocommerce_init的触发时机是WooCommerce自身初始化完成的节点,此时WordPress还未执行页面主查询,所有基于查询结果的条件标签都无法返回正确值,自然判断失效。

推荐的替代钩子

以下两个钩子触发时机都晚于plugins_loaded,且所有条件标签都可正常使用,匹配度远高于wp_enqueue_scripts:

  • 首选 template_redirect
    这是处理前台页面类型判断相关逻辑的最常用钩子,触发时机为WordPress确定当前页面要加载的模板之后、模板渲染之前,完全兼容所有WordPress和WooCommerce的条件标签,不管是要注册内容修改钩子、权限判断还是页面逻辑调整都适用。
  • 次选 wp 钩子
    触发时机比template_redirect更早,在WordPress主查询执行完成后就会触发,同样支持所有条件标签,如果你的逻辑需要在模板加载前更早执行可以选择这个钩子。
示例修改代码

你可以直接调整init()方法内的钩子注册逻辑即可:

public function init() {
    // 替换为template_redirect即可,条件判断正常生效,钩子匹配度更高
    add_action( 'template_redirect', array( $this, 'doo_woo' )); 
}

内容的提问来源于stack exchange,提问作者Khrys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:00:02