Woocommerce 过滤器购物车和类别特定数量

Woocommerce filter cart and category specific quantity

所以基本上,我正在尝试过滤我的购物车。 如果 "cuvees" 类别中的产品数量为 4,5,7,8,9,10,11,13,14,15,16,17,19,21,我希望显示以下消息购物车。

到目前为止我所做的一切,但它只适用于一个值:7。 声明函数时是否需要放置一个数组?

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;">/!\&nbsp;    Une commande de %s bouteilles n&#39;est pas possible&nbsp;! &nbsp;   /!\ </h5><br /> <br /><p style="text-align:center;"> L&#39;envoi n&#39;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;
        }
    }        

谢谢大家!

我要在这里摸索一下(我仍然不能 100% 确定要求,但看来您需要一个数组)。试试下面的代码:

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 = array(4,5,7,8,9,10,11,13,14,15,16,17,19,21);



                // 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( in_array($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;">/!\&nbsp;    Une commande de %s bouteilles n&#39;est pas possible&nbsp;! &nbsp;   /!\ </h5><br /> <br /><p style="text-align:center;"> L&#39;envoi n&#39;est possible que pour 1 | 2 | 3 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60  | 72 | 96 | 120 et plus bouteilles.</p>',
                            $total_quantity ),
                        'error' );
                    }
                    $i++;
                endif;
            endforeach;
        }
    }

如果这仍然不能回答你的问题,请澄清"are at the number of 4,5,7,8,9,10,11,13,14,15,16,17,19,21 in the cart."在原问题中的含义,我可以更好地帮助你。