So basically, I’m trying to filter my cart.
I would like the message below displayed if products from the “cuvees” category are at the number of 4,5,7,8,9,10,11,13,14,15,16,17,19,21 in the cart.
So far here what I’ve did but it only works for one value : 7 .
Do I need to put an array when I declare the function ?
add_action( 'woocommerce_check_cart_items', 'check_total' );
function check_total() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce, $product;
$i=0;
//$prod_id_array = array();
//loop through all cart products
foreach ( $woocommerce->cart->cart_contents as $product ) :
// Set checking if there's y products in cuvees cart total
$cart_product_total = 4;
// See if any product is from the cuvees category or not
if ( has_term( 'cuvees', 'product_cat', $product['product_id'] ) ) :
$total_quantity += $product['quantity'];
//array_push($prod_id_array, $product['product_id']);
endif;
endforeach;
foreach ( $woocommerce->cart->cart_contents as $product ) :
if ( has_term( 'cuvees', 'product_cat', $product['product_id'] ) ) :
if( $total_quantity == $cart_product_total && $i == 0 ) {
// Display our error message
wc_add_notice( sprintf( '<h5 style="letter-spacing:0.5px;color:white;text-align:center;">/! Une commande de %s bouteilles n'est pas possible ! /! </h5><br /> <br /><p style="text-align:center;"> L'envoi n'est possible que pour 1 | 2 | 3 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 | 72 | 96 | 120 et plus bouteilles.</p>',
$cart_product_total,
$total_quantity ),
'error' );
}
$i++;
endif;
endforeach;
}
}
Thanks guys!
I’m going to take a stab in the dark here (I’m still not 100% sure of the requirements, but it appears that you need an array). Try the code below:
If this still doesn’t answer your question, please clarify what “are at the number of 4,5,7,8,9,10,11,13,14,15,16,17,19,21 in the cart.” means in the original question, and I can better help you out.