Условие в functions.php
add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees'); function add_custom_fees( WC_Cart $cart ){ if( $cart->cart_contents_count < 6 ){ return; } $cart->add_fee( 'более 5 шт.', 200); }
Его суть, если в корзине товара больше 5 шт. то +200 руб. к стоимости…
Може кто подскажет, как сделать, чтобы было условие:
если более 5 но менее 10 — 200
а если более 10 но менее 15 — 400
в общем
от 6 до 10 шт. — 200
от 11 до 15 шт. — 400
от 16 до 20 шт. — 600
Заранее благодарю!
1 Ответ(ы)
if( ($cart->cart_contents_count >= 6) && ($cart->cart_contents_count <=10) ){ $cart->add_fee( '6 - 10', 200); } if( ($cart->cart_contents_count >= 11) && ($cart->cart_contents_count <= 15) ){ $cart->add_fee( '11 - 15', 400); } if( ($cart->cart_contents_count >= 16) && ($cart->cart_contents_count <=20) ){ $cart->add_fee( '16 - 20', 600); }

Спасибо!
Но такой код ломает систему (
чистый лист).
Я тут, вот такой код сообразил:
function woo_discount_total(WC_Cart $cart) { $wo_current_price = $cart->subtotal; if($cart->cart_contents_count >= 1 && $cart->cart_contents_count <= 5) { $cart->add_fee("(1-5) шт. ", 0); } elseif($cart->cart_contents_count >= 6 && $cart->cart_contents_count <= 10) { $cart->add_fee("(6-10) шт. ", 200); } elseif($cart->cart_contents_count >= 11 && $cart->cart_contents_count <= 15) { $cart->add_fee("(11-15) шт. ", 400); } elseif($cart->cart_contents_count >= 16 && $cart->cart_contents_count <= 20) { $cart->add_fee("(6-20) шт. ", 600); } } add_action("woocommerce_cart_calculate_fees" , "woo_discount_total");
Правда… когда в заказе менее 5 шт. в корзине все нормально отображается, 0 руб., а вот в письме о заказе, этот пункт пропадает.
А вот, если 6-ть и более, то все нормально везде.

если в условии от 1 до 5 поставить 1, вместо 0
if($cart->cart_contents_count >= 1 && $cart->cart_contents_count <= 5) { $cart->add_fee("(1-5) шт. ", 1);
то все нормально становится
блин, а хотелось бы, чтобы так 0 руб. и тображался, а не 1 руб.