Search code examples
phpwordpresswoocommercecustom-taxonomycoupon

Make coupon field mandatory for a product category in WooCommerce


I am trying to make it so the coupon field is mandatory on Woocommerce for a product category. I have tried to use the code from this answer but it only works with a set of coupon code. I need it to work with any valid coupon code.

Thank you for any help.


Solution

  • Try the following that will make the coupon field mandatory when a cart item from a specific product category is found:

    add_action( 'woocommerce_check_cart_items', 'mandatory_coupon_code' );
    function mandatory_coupon_code() {
         // Set your product categories in the array (can be term IDs, slugs or names)
        $product_categories = array( 'clothing' );
    
        $found = false;
    
        // Loop through cart items to check for the product categories
        foreach ( WC()->cart->get_cart() as $cart_item ){
            if( has_term( $product_categories, 'product_cat', $cart_item['product_id'] ) ){
                $found = true; // cart item from the product category is found
                break; // We can stop the loop
            }
        }
    
        // If not found we exit
        if( ! $found ) return; // exit
    
        $applied_coupons = WC()->cart->get_applied_coupons();
    
        // Coupon not applied and product category found
        if( is_array($applied_coupons) && sizeof($applied_coupons) == 0 ) {
            // Display an error notice preventing checkout
            $message = __( 'Please enter a coupon code to be able to checkout.', 'woocommerce' );
            wc_add_notice( $message, 'error' );
        }
    }
    

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

    enter image description here