phpwordpresswoocommerce

Woocommerce set category minimum cart


I would like block price for specific woocommerce category, now work only all category woocommerce my code. My category name is: stock . I want only use for this category.

I want that a user if buy stock category have to buy minimum 1200.

    // Set a minimum dollar amount per order
add_action( 'woocommerce_check_cart_items', 'spyr_set_min_total' );
function spyr_set_min_total() {
    // Only run in the Cart or Checkout pages
    if( is_cart() || is_checkout() ) {
        global $woocommerce;

        // Set minimum cart total
        $minimum_cart_total = 1200;

        // Total we are going to be using for the Math
        // This is before taxes and shipping charges
        $total = WC()->cart->subtotal;

        // Compare values and add an error is Cart's total
        // happens to be less than the minimum required before checking out.
        // Will display a message along the lines of
        // A Minimum of 10 USD is required before checking out. (Cont. below)
        // Current cart total: 6 USD 
        if( $total <= $minimum_cart_total  ) {
            // Display our error message
            wc_add_notice( sprintf( '<strong>A Minimum of %s %s is required before checking out.</strong>'
                .'<br />Current cart\'s total: %s %s',
                $minimum_cart_total,
                get_option( 'woocommerce_currency'),
                $total,
                get_option( 'woocommerce_currency') ),
            'error' );
        }
    }
}

Solution

  • Try below code :

        add_action( 'woocommerce_check_cart_items', 'spyr_set_min_total' );
        function spyr_set_min_total() {
            // Only run in the Cart or Checkout pages
            if( is_cart() || is_checkout() ) {
    
                global $woocommerce, $product;
                $i=0;
                //loop through all cart products
                foreach ( $woocommerce->cart->cart_contents as $product ) :
    
    
                    // Set minimum cart total
                    $minimum_cart_total = 1200;
    
                    // Total we are going to be using for the Math
                    // This is before taxes and shipping charges
                    $total = WC()->cart->subtotal;
    
                    // See if any product is from the STOCK category or not
                    if ( has_term( '112', 'product_cat', $product['product_id'] ) ) :
    
                        //Get price of that product
                        $regular_price = get_post_meta($product['product_id'], '_sale_price', true); //change to _sale_price if it is in sale
                        //echo $regular_price."<br>";
                        $total = $regular_price * $product['quantity']; 
                        //echo $total."<br>";
                        $subtotal_cat += $total; //get total of 
                        //echo $subtotal_cat;
                        //$category_price += ( $product['line_subtotal'] + $product['line_subtotal_tax'] );
    
                    endif;
    
                endforeach;
                foreach ( $woocommerce->cart->cart_contents as $product ) :
    
                    if ( has_term( '112', 'product_cat', $product['product_id'] ) ) :
    
                        // Compare values and add an error is Cart's total
                        // happens to be less than the minimum required before checking out.
                        // Will display a message along the lines of
                        // A Minimum of 10 USD is required before checking out. (Cont. below)
                        // Current cart total: 6 USD 
                        if( $subtotal_cat <= $minimum_cart_total  ) {
                            // Display our error message
                            wc_add_notice( sprintf( '<strong>A Minimum of %s %s is required from stock category before checking out.</strong>'
                                .'<br />Current cart\'s total: %s %s',
                                $minimum_cart_total,
                                get_option( 'woocommerce_currency'),
                                $subtotal_cat,
                                get_option( 'woocommerce_currency') ),
                            'error' );
                        }
                    endif;
                endforeach;
    
            }
    
        }
    

    Let me know the output..