ajanthalakmal
Forum Replies Created
Viewing 1 replies (of 1 total)
-
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/
- This reply was modified 4 years, 6 months ago by ajanthalakmal.
Viewing 1 replies (of 1 total)