【问题标题】:Remove/Hide Woocommerce Added to Cart Message but Keep/Display Coupon Applied Message删除/隐藏 Woocommerce 添加到购物车消息但保留/显示优惠券应用消息
【发布时间】:2025-11-26 18:45:01
【问题描述】:

我正在尝试在我的 WooCommerce 结帐页面顶部删除或隐藏已添加到购物车的消息(我已删除购物车页面,因此此消息显示在结帐页面上)。我尝试将其添加到我的 CSS 中:

.woocommerce-message {display: none;}. 

虽然这会隐藏添加到购物车的消息,但它也隐藏了我不想隐藏的优惠券应用消息。

接下来,我在 functions.php 文件中的 Business Bloomer 博客中尝试了这段代码 sn-p:

// Removes Product Successfully Added to Cart

add_filter( 'wc_add_to_cart_message', 'custom_add_to_cart_message' );

function custom_add_to_cart_message() {

echo '<style>.woocommerce-message {display: none !important;}</style>';

}

这隐藏了文本,但应用于 .woocommerce-message 类的 div 的样式仍然可见,包括背景颜色、填充等。所以我在页面顶部留下了一个矩形,没有里面有文字。

任何关于我如何完全隐藏 .woocommerce-message div 仅用于添加到购物车消息的想法,而不是 .woocommerce-message div 用于优惠券应用消息或任何其他消息,我们将不胜感激!

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    这对我有用:

    add_filter( 'wc_add_to_cart_message', 'remove_add_to_cart_message' );
    
    function remove_add_to_cart_message() {
        return;
    }
    

    【讨论】:

    • 这是有效的答案。
    • @Ivijan Stefan Stipić 这个答案肯定会取代我的答案,但它并不完全正确。 wc_add_to_cart_message 已弃用,应使用 wc_add_to_cart_message_html 代替它。
    • 我们可以使用add_filter( 'wc_add_to_cart_message_html', '__return_false' );
    • 感谢 bellmountain 和 @JamesJones 但这似乎从所有页面中删除了添加到购物车的通知。如果我只想从购物车和结帐页面中删除它怎么办? (但把它留在产品页面上?)
    • @J.K 修改上述函数以包含一些条件。试试这样的function remove_add_to_cart_message($message){ if ( is_cart() || is_checkout() ) { return; } return $message; }
    【解决方案2】:

    更新:2018 年 5 月 18 日请参阅 bellmountain 的更简单的答案以了解正确的方法。

    将此代码添加到您的主题functions.php 文件中。它只会删除该消息。它应该只在可能发生的页面上触发。

    function remove_added_to_cart_notice()
    {
        $notices = WC()->session->get('wc_notices', array());
    
        foreach( $notices['success'] as $key => &$notice){
            if( strpos( $notice, 'has been added' ) !== false){
                $added_to_cart_key = $key;
                break;
            }
        }
        unset( $notices['success'][$added_to_cart_key] );
    
        WC()->session->set('wc_notices', $notices);
    }
    add_action('woocommerce_before_single_product','remove_added_to_cart_notice',1);
    add_action('woocommerce_shortcode_before_product_cat_loop','remove_added_to_cart_notice',1);
    add_action('woocommerce_before_shop_loop','remove_added_to_cart_notice',1);
    

    不用担心使用你尝试过的那个 css。

    【讨论】:

    • 感谢您的回答,这让我开始朝着正确的方向前进!我将您建议的代码添加到我网站的 functions.php 文件中,但它似乎没有工作。当我将产品添加到我的购物车时,该消息仍然显示在结帐页面的顶部(我的产品页面直接转到我的结帐页面,绕过购物车页面)。但是,通过使用特定于主题的钩子,我能够让它工作:add_action('pexeto_before_content','remove_added_to_cart_notice',1);。我正在使用 Pexeto Story 主题。再次感谢!
    • 别担心,很高兴它能帮到你!
    • 我正在使用Optimizer theme。我在哪里可以找到合适的钩子?
    • @MaciejKrawczyk - 我添加了“更新:2018 年 5 月 18 日请参阅 bellmountain 的更简单的答案以了解正确的方法。”在您发表评论之前以粗体显示。
    【解决方案3】:

    我正在使用这个:

    add_filter( 'wc_add_to_cart_message_html', '__return_null' );
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    • @ Alex Riabov - 此答案与此页面上的其他早于答案的上下文一样多。如果你有问题问它。答案不需要上下文或如何。过滤器的工作原理不是这个问题的范围 - 去看看吧。
    【解决方案4】:

    这应该可以隐藏添加到购物车消息的产品

    add_filter( 'wc_add_to_cart_message', 'remove_cart_message' );
    
    function remove_cart_message() {
        return;
    }
    

    【讨论】:

      【解决方案5】:

      刚刚使用了以下,效果很好:

      div.woocommerce-message {
          display: none !important;
      }
      

      希望这会有所帮助!

      【讨论】: