2014-10-26 2 views
4

Я искал какое-то время, но я не могу найти, как программно удалить купоны woocommerce.Как программно удалить прикладные купоны на скидку в Woocommerce?

Я пытаюсь сделать скидки на основе общей суммы. Мне нужно применить скидочные купоны, потому что, если у вас есть продукты стоимостью 1000 € (15% скидка на купоны) и удалять продукты и оставлять только продукты стоимостью 50 евро, вы все равно получаете эту скидку 15%, потому что мой код не удаляет уже примененный купон ,

Так вот мой код сейчас:

add_action('woocommerce_before_cart', 'apply_matched_coupons'); 

function apply_matched_coupons() { 
    global $woocommerce; 

$coupon_code5 = '5p'; // your coupon code here 
$coupon_code10 = '10p'; // your coupon code here 
$coupon_code15 = '15p'; // your coupon code here 
$coupon_code20 = '20p'; // your coupon code here 
$coupon_code25 = '25p'; // your coupon code here 

    if ($woocommerce->cart->has_discount($coupon_code)){ 
return; 
} 

    if ($woocommerce->cart->cart_contents_total >= 4000) { 
     $woocommerce->cart->add_discount($coupon_code25); 
     $woocommerce->show_messages(); 
    } 
else if ($woocommerce->cart->cart_contents_total >= 2000) { 
     $woocommerce->cart->add_discount($coupon_code20); 
     $woocommerce->show_messages(); 
    } 
else if ($woocommerce->cart->cart_contents_total >= 1000) { 
     $woocommerce->cart->add_discount($coupon_code15); 
     $woocommerce->show_messages(); 
    } 
else if ($woocommerce->cart->cart_contents_total >= 500) { 
     $woocommerce->cart->add_discount($coupon_code10); 
     $woocommerce->show_messages(); 
    } 
else if ($woocommerce->cart->cart_contents_total >= 200) { 
     $woocommerce->cart->add_discount($coupon_code5); 
     $woocommerce->show_messages(); 
    } 

} 

ответ

5

Чтобы удалить один купон из корзины, используя его использование WC_Cart->remove_coupon($code) кода купона.

Чтобы удалить все купоны из корзины можно будет использовать WC_Cart->remove_coupons($type) - $type по умолчанию для null для всех, проходят в «корзину», чтобы удалить до налогообложения купонами, «порядок» для после уплаты налогов купонами.

Чтобы получить все купоны в корзине как array, вы можете выполнить цикл и, при необходимости, удалить, используйте WC_Cart->get_coupons().

for (WC()->cart->get_coupons as $code => $coupon){ 
    $valid = ? // decide to remove or not 
    if (! $valid){ 
     WC()->cart->remove_coupon($code); 
    } 
} 
+1

хороший ответ, спасибо –

4

Метод carta remove_coupons() был обновлен таким образом, что тип больше не требуется. Теперь, чтобы удалить все купоны, это будет делать трюк:

WC()->cart->remove_coupons();

Для получения дополнительной информации обратитесь к документации по классу WC_Cart here.

+0

Спасибо! Не знаю об этом :) –

+0

Это уже был случай, '$ type' по умолчанию' null'. – doublesharp

 Смежные вопросы

  • Нет связанных вопросов^_^