Как я могу обновить этот код для работы в зависимости от количества одного конкретного продукта в корзине - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь автоматически добавлять продукт y (бесплатный) каждый раз, когда продукт x находится в корзине на woocommerce.

У меня может быть код в порядке для одного продукта x, взятого в корзину,Другое - это авто в корзине на 0 (бесплатно).

Но как я могу соотнести количество продукта x (выбранное клиентом) с количеством бесплатного продукта (должно быть одинаковым) автоматически добавить.

Я думаю, у меня естьцикл выполнения и корреляция с этой функцией $ woocommerce-> cart-> set_quantity (product_id, product_quantity);

но я немного растерялся между всеми тестами и исследованиями, проведенными сегодня, ничего не получается хорошо

ты можешь помочь?ты аурели

    <?php
//Add free product to cart based on date and products in cart
add_action( 'template_redirect', 'add_product_to_cart' );
add_action( 'woocommerce_before_calculate_totals', 'add_product_to_cart' );
function add_product_to_cart() {
        $dt = new DateTime();
        $current_date = $dt->format('d/m/Y');
        $end_promo = date('d/m/Y', '01/08/2019'); 

        $product_id = 245;  //free product
        $anti_eau_id = 192; //product x who determined the offer
        $allowed_products = array(245, 192);  //all the product concerned by the offer
        $found = false; //is free in basket ?
        //check if product already in cart
        if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->id == $product_id ){
                    $found = true;
                } elseif ( $_product->id == $anti_eau_id ){
                    $found = false;
                } else {
                    $found = true;
                }
            }
            // if products not found, add it
            if ( ! $found )
                    WC()->cart->add_to_cart( $product_id );
                foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                    $_product = $values['data'];
                    //is product is in autorized list
                    if ( in_array( $_product->id, $allowed_products )){

                        if ( $_product->id == 245 && sizeof( WC()->cart->get_cart() ) >= 1){
                            $custom_price = 0; // This will be your custome price
                            $_product->set_price( $custom_price );    
                        }
                    } else {
                        echo '1  offert pour 1 acheté'; 
                    }
                }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...