Я пытаюсь автоматически добавлять продукт 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é';
}
}
}
}