Mary James
Mary James

Reputation: 256

Remove/Hide Woocommerce Added to Cart Message but Keep/Display Coupon Applied Message

I'm trying to remove or hide the added to cart message at the top of my WooCommerce checkout page (I have removed the cart page so this message is showing up on the checkout page). I tried adding this to my CSS:

.woocommerce-message {display: none;}. 

Although this hides the added to cart message as I want it to, it also hides the coupon applied message, which I do not want hidden.

Next I tried this code snippet from the Business Bloomer blog in the functions.php file:

// 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>';

}

This hides the text, but the styles applied to the div with the class of .woocommerce-message are still visible, including background-color, padding etc. So I'm left with a rectangle at the top of my page with no text in it.

Any thoughts on how I can completely hide the .woocommerce-message div just for the added to cart message, but not the .woocommerce-message div for the coupon applied message or any other messages would be appreciated!

Upvotes: 6

Views: 36109

Answers (5)

Deepak
Deepak

Reputation: 313

This should work to hide the product added to cart message

add_filter( 'wc_add_to_cart_message', 'remove_cart_message' );

function remove_cart_message() {
    return;
}

Upvotes: 1

kh1
kh1

Reputation: 120

I`m using this:

add_filter( 'wc_add_to_cart_message_html', '__return_null' );

Upvotes: 5

James Jones
James Jones

Reputation: 3899

Update: 18/05/2018 Please refer to bellmountain's much simpler answer for the correct way to do this.

Add this code to your themes functions.php file. It will remove only that message. It should trigger on just the pages where it is likely to occur.

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);

Don't worry about using that css you've tried.

Upvotes: 5

andy
andy

Reputation: 9

Just used the following and it worked fine:

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

Hope this helps!

Upvotes: -2

bellmountain
bellmountain

Reputation: 301

this worked for me:

add_filter( 'wc_add_to_cart_message', 'remove_add_to_cart_message' );

function remove_add_to_cart_message() {
    return;
}

Upvotes: 20

Related Questions