Задать вопрос

Как сделать проверку примененных купонов в корзине для применения налога?

Всем привет.
В корзине работает скрипт по добавлению скидки (сделан на основе налогов), который применяется или не применяется в зависимости от примененных купонов. Таких купонов больше 20 штук и через if проверять каждый как-то не разумно на мой взгляд, поэтому я в поиске как эту проверку сделать более элегантно. Пример прикладываю.
Надеюсь на любую помощь и советы конечно же :)

function woo_discount_total(WC_Cart $cart_object) {

if(in_array( wc_format_coupon_code( 'coupon_code_1'), $cart_object->get_applied_coupons() ) == false &&
        in_array( wc_format_coupon_code( 'coupon_code_2'), $cart_object->get_applied_coupons() ) == false && 
        in_array( wc_format_coupon_code( 'coupon_code_3'), $cart_object->get_applied_coupons() ) == false && 
        ...) {
	    $discount = $cart->subtotal * 0.05; 
            $cart->add_fee("Фиксированная скидка в 5% ", -$discount);
       }
}

add_action("woocommerce_cart_calculate_fees" , "woo_discount_total");
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Средний 2 комментария
Решения вопроса 1
ElizavetaKrasova
@ElizavetaKrasova Автор вопроса
На другом форуме подсказали что нужно было сделать для решения задачи :)
/**
 * Calc total discount.
 *
 * @param WC_Cart $cart_object Cart object.
 */
function woo_discount_total( WC_Cart $cart_object ) {
    $coupons = [
        'coupon_code_1',
        'coupon_code_2',
        'coupon_code_3',
    ];

    $applied_coupons = $cart_object->get_applied_coupons();

    if ( ! empty( array_intersect( $coupons, $applied_coupons ) ) ) {
        $discount = $cart_object->subtotal * 0.05;
        $cart_object->add_fee( 'Фиксированная скидка в 5% ', - $discount );
    }
}

add_action( 'woocommerce_cart_calculate_fees', 'woo_discount_total' );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы