Skip to content

Instantly share code, notes, and snippets.

@rynaldos-zz
Last active September 20, 2021 23:53
Show Gist options
  • Save rynaldos-zz/560c621714b9680433cddf18e6a50305 to your computer and use it in GitHub Desktop.
Save rynaldos-zz/560c621714b9680433cddf18e6a50305 to your computer and use it in GitHub Desktop.
[WooCommerce] Hide "add to cart" button on certain product categories
add_action( 'woocommerce_after_shop_loop_item', 'remove_add_to_cart_buttons', 1 );
function remove_add_to_cart_buttons() {
// replace a_category and another_category with the slugs of the categories you'd like to have the button removed from
if( is_product_category( array( 'a_category', 'another_category'))) {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
}
}
// Did this help? Donate me some BTC: 1BEsm8VMkYhSFJ92cvUYwxCtsfsB2rBfiG
@alexanderbiscajin
Copy link

If you want to hide add to cart button for specific products you simply use this code in functions.php

add_filter('woocommerce_is_purchasable', 'wpblog_specific_product');
function wpblog_specific_product($purchaseable_product_wpblog, $product) {
return ($product->id == specific_product_id (512) ? false : $purchaseable_product_wpblog);
}

Reference: https://www.wpblog.com/add-to-cart-button-in-woocommerce-store/

@gowtham156
Copy link

If you want to hide add to cart button for specific products you simply use this code in functions.php

add_filter('woocommerce_is_purchasable', 'wpblog_specific_product');
function wpblog_specific_product($purchaseable_product_wpblog, $product) {
return ($product->id == specific_product_id (512) ? false : $purchaseable_product_wpblog);
}

Reference: https://www.wpblog.com/add-to-cart-button-in-woocommerce-store/
Don't use this code it will not works lots of people also got the same response.

@HabeebCycle
Copy link

HabeebCycle commented Jun 30, 2020

Try this

function custom_buy_buttons(){
   $product = get_product();

   if ( has_term( 'CATEGORY_NAME', 'product_cat') ){
       // removing the purchase buttons
       remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
       remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
       remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
       remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
       remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
       remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
   }
}

add_action( 'wp', 'custom_buy_buttons' );

@ajanthalakmal
Copy link

Use this code

/*
Plugin Name: Remove 'Add to cart' conditionally
Plugin URI:  https://www.damiencarbery.com/2020/03/remove-add-to-cart-conditionally/
Description: Conditionally remove the 'Add to cart' button in WooCommerce.
Author: Damien Carbery
Version: 0.2
*/


class IsPurchasableConditionalFiltering {
	// A reference to an instance of this class.
	private static $instance;
	// Store whether 'Add to cart' button should be displayed.
	private $purchasable;


	// Returns an instance of this class. 
	public static function get_instance() {
		if ( null == self::$instance ) {
			self::$instance = new IsPurchasableConditionalFiltering;
		}
		return self::$instance;
	}


	// Initialize the plugin variables.
	public function __construct() {
		$this->purchasable = array();

		$this->init();
	}


	// Set up WordPress specfic actions.
	public function init() {
		add_filter( 'woocommerce_is_purchasable', array( $this, 'is_purchasable_conditionals' ), 10, 2 );
		add_filter( 'woocommerce_variation_is_purchasable', array( $this, 'variation_is_purchasable_conditionals' ), 10, 2 );
		
		// Remove variations dropdown and 'Add to cart' button for variable products.
		add_action( 'woocommerce_before_single_product_summary', array( $this, 'before_single_product_summary' ) );
	}
	
	
	public function is_purchasable_conditionals( $whether_purchasable, $product ) {
		// Return cached result.
		if ( array_key_exists( $product->get_id(), $this->purchasable ) ) {
			return $this->purchasable[ $product->get_id() ];
		}
		
		// Only do our conditional checks if WooCommerce deems the item to be purchasable.
		if ( $whether_purchasable ) {
			$result = true;  // Default to allowing purchase.
			
			// Check our specific conditions - some examples.
			/* // Product over a certain price.
			if ( $product->get_price() > 2 ) {
				$result = false;
			}*/
			
			// Check if product in a certain categores.
			if ( has_term( array( 'hoodies', 'accessories' ), 'product_cat', $product->get_id() ) ) {
				$result = false;
			}
			
			
			$this->purchasable[ $product->get_id() ] = $result;
		}
		else {
			// Store that this item cannot be purchased.
			$this->purchasable[ $product->get_id() ] = false;
		}

		return $this->purchasable[ $product->get_id() ];
	}
	
	
	public function variation_is_purchasable_conditionals( $whether_purchasable, $product ) {
		return $whether_purchasable;
	}
	
	
	public function before_single_product_summary() {
		$product_id = get_the_ID();
		if ( array_key_exists( $product_id, $this->purchasable ) && !$this->purchasable[ $product_id ] ) {
			remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
			remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 ); 
		}
	}
}
$IsPurchasableConditionalFiltering = new IsPurchasableConditionalFiltering;

Reference : https://www.damiencarbery.com/2020/03/remove-add-to-cart-button-conditionally/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment