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

WooCommerce中remove_action移除wc_empty_cart_message不生效如何解决

移除wc_empty_cart_message提示失效的解决方案

失效核心原因

你写的remove_action没有生效,大概率是执行时机不对:remove_action必须在对应add_action执行完成后、钩子实际触发前运行才会生效,如果你直接把移除代码写在主题functions.php根层级,很可能在主题、插件挂载该钩子前就执行了移除操作,后续挂载的动作还是会生效。

排查&解决步骤

  • 第一步:确认钩子的实际挂载优先级
    很多主题、二次开发代码会修改wc_empty_cart_message的挂载优先级,不再是默认的10,你可以临时添加以下调试代码到functions.php,输出该钩子的所有挂载回调信息,找到对应回调的实际优先级:
    add_action('wp', function() {
        global $wp_filter;
        if (isset($wp_filter['woocommerce_cart_is_empty'])) {
            echo '<pre>';
            print_r($wp_filter['woocommerce_cart_is_empty']->callbacks);
            echo '</pre>';
        }
    });
    
    访问店铺页面后,输出内容中找到wc_empty_cart_message对应的优先级数值,替换你原有移除代码中的10参数即可。
  • 第二步:调整移除代码的执行时机
    把移除操作套在init钩子中执行,设置足够高的优先级,确保所有主题、插件的钩子挂载完成后再执行移除:
    add_action('init', function() {
        // 此处优先级替换为第一步查到的实际数值
        remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10 );
    }, 999);
    
  • 第三步:处理非默认钩子输出的提示
    如果执行前两步后提示仍然存在,说明该提示不是来自默认的woocommerce_cart_is_empty钩子:
    1. 前端右键点击提示框选择「检查」,查看元素的class属性,如果包含woocommerce-info、woocommerce-notice类名,属于WooCommerce全局通知,用以下代码过滤指定文本的通知:
    add_filter('woocommerce_add_notice', function($message, $notice_type) {
        if (str_contains($message, '结账为空时购物车不可用')) {
            return '';
        }
        return $message;
    }, 10, 2);
    
    1. 兜底方案:直接添加CSS隐藏对应提示,将下面代码添加到主题自定义CSS设置中即可:
    /* 替换为你实际查到的提示框class名 */
    .woocommerce-notice:contains("结账为空时购物车不可用") {
        display: none !important;
    }
    

内容的提问来源于stack exchange,提问作者J.K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:36:05