Search code examples
phpwordpresswoocommercecartnotice

Unset removed cart item notice on WooCommerce cart page


Is there a way to hide/remove the notice "Product removed. Undo?" on the cart page, when the customer removed the item from the cart?

I tried:

add_filter( 'woocommerce_cart_item_removed_title', '__return_null' );

but this only hides the title of the product, that has been removed...

I couldn't find the right hook of the rest of the line ("removed" and "Undo?")


Solution

  • To unset "{item_name} removed. Undo?" notice on cart page, you can trick Woocommerce with the following:

    add_action( 'template_redirect', 'null_removed_cart_item_message'  );
    function null_removed_cart_item_message() {
        // Only on cart page
        if( ! is_cart() ) return;
    
        // Get the WC notices array stored in WC_Session
        $wc_notices = (array) WC()->session->get( 'wc_notices' );
        $found      = false; // Initializing
    
        // Check that we have at least one "success" notice type
        if( isset($wc_notices['success']) && sizeof($wc_notices['success']) ) {
            // Loop through "success" notices type
            foreach( $wc_notices['success'] as $key => $wc_notice ) {
                // Remove notices that contain the word "removed" from the array
                if ( strpos($wc_notice, 'removed') !== false ) {
                    unset($wc_notices['success']);
                    $found = true;
                }
            }
        }
    
        if( $found ) {
            // Set back the notices array to WC_Session
            WC()->session->set( 'wc_notices', $wc_notices );
        }
    }
    

    Code goes in function.php file of your active child theme (or active theme). Tested and works.

    Important: Depending on your installation language, you could need to change the word "removed" in the function code to the one that is convenient in your installation language.