Условное добавление платы за корзину, если к корзине не применены купоны

В WooCommerce я пытаюсь выяснить, как добавить «комиссию за обработку» к каждому заказу, если к корзине не применены купоны или промо-коды.

Вот мой код «Плата» или «Плата за обслуживание»:

    add_action( 'woocommerce_cart_calculate_fees','endo_handling_fee' );

function endo_handling_fee() {

global $woocommerce;

if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

$fee = 2.00;
$woocommerce->cart->add_fee( 'Handling', $fee, true, 'standard' );
}

Есть идеи?

Спасибо

4

Решение

Здесь я получаю массив купонов, примененных к корзине, и если к корзине не применены купоны, то к корзине применяется комиссия.

Вот этот код:

add_action( 'woocommerce_cart_calculate_fees','conditional_handling_fee' );
function conditional_handling_fee() {

if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

// Get the applied coupons + the count (in cart)
$applied_coupons_arr = WC()->cart->get_applied_coupons();
$applied_coupons_count = count($applied_coupons_arr);

$fee = 2.00;

if( 0 == $applied_coupons_count )
WC()->cart->add_fee( 'Handling - '.$applied_coupons_count, $fee, true, 'standard' );

}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Этот код протестирован и работает.


Ссылка: Класс WC_Cart — метод get_applied_coupons ()

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector