WooCommerce : Change “Add to Cart” Text if Product Already in Cart.

If one a product is already in cart, displaying a different text instead of “Add to Cart” text for “add_to_cart” button is a nice idea.
When a product is in cart , woocomerce still show ‘Add to Cart’ text. There is no information on shop page or product page that ‘s this product is already in cart.

It is simple in WooCommerce because WooCommerce have filter and hook to change this add to cart button text.But Before changing “Add to Cart” button text, we first need to check if the item is already in cart.

There are two places where user can add product to cart
1. Shop page(Loop Page)
2. Single product page

1. Shop page(Loop Page)

The Filter added by WooCommerce For WooCommerce product loop is ‘woocommerce_product_add_to_cart_text’ Filter.

// Shop page
function ChangeAddToCartButtonTextLoop( $label, $product ) {   
  if ( $product->get_type() == 'simple' && $product->is_purchasable() && $product->is_in_stock() ) {     
    foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
      $_product = $values['data'];
      if( get_the_ID() == $_product->get_id() ) {
        $label = __('Already in Cart. Add again?', 'woocommerce');
      }
    }      
  }   
return $label;  
}
add_filter('woocommerce_product_add_to_cart_text','ChangeAddToCartButtonTextLoop',99,2 );

Example:

2. Single Product Page

The Filter added by WooCommerce For WooCommerce Single Product Pag is ‘woocommerce_product_single_add_to_cart_text’ Filter.

// Single Product page
function ChangeAddToCartButtonTextSingleProduct( $label ) {
  foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
    $product = $values['data'];
    if( get_the_ID() == $product->get_id() ) {
      $label = __('Already in Cart. Add again?', 'woocommerce');
    }
  }   
return $label;
}
add_filter('woocommerce_product_single_add_to_cart_text','ChangeAddToCartButtonTextSingleProduct');

Example:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top