2013-08-30 2 views
0

Я в настоящее время разрабатывает плагин для WooCommerce, и есть следующий код, который добавляет код скидки, если сумма телеге находится между 2 значения:WooCommerce применения корзины купоны

add_action('woocommerce_before_cart', 'woobd_add_discount_if_enabled'); 

function woobd_add_discount_if_enabled() 
{ 
    global $woocommerce; 
    if ($woocommerce->cart->cart_contents_total >= 10 
     && $woocommerce->cart->cart_contents_total <= 100 
    ) { 
     $woocommerce->cart->add_discount('layer1_discount'); 
    } else {   
     $woocommerce->cart->remove_coupons('layer1_discount'); 
     $woocommerce->cart->calculate_totals(); 
    } 
} 

выше работает отлично однако я хотел бы добавить еще, если заявление, как это, которое добавляет еще 2 значения:

add_action('woocommerce_before_cart', 'woobd_add_discount_if_enabled'); 

function woobd_add_discount_if_enabled() 
{ 
    global $woocommerce; 
    if ($woocommerce->cart->cart_contents_total >= 10 
     && $woocommerce->cart->cart_contents_total <= 100 
    ) { 
     $woocommerce->cart->add_discount('layer1_discount'); 
    } else {   
     $woocommerce->cart->remove_coupons('layer1_discount'); 
     $woocommerce->cart->calculate_totals(); 
    } 

    if ($woocommerce->cart->cart_contents_total >= 100 
     && $woocommerce->cart->cart_contents_total <= 200 
    ) { 
     $woocommerce->cart->add_discount('layer2_discount'); 
    } else {   
     $woocommerce->cart->remove_coupons('layer2_discount'); 
     $woocommerce->cart->calculate_totals(); 
    } 
} 

по какой-то причине второго, если заявление только получить обнаружено, полностью игнорируя первый. Есть ли что-то заметное в этом отношении?

ответ

1

Возможно, если вы измените два отдельных оператора на if, elseif, else - это сработает.

add_action('woocommerce_before_cart', 'woobd_add_discount_if_enabled'); 

function woobd_add_discount_if_enabled() 
{ 
    global $woocommerce; 
    if ($woocommerce->cart->cart_contents_total >= 10 
     && $woocommerce->cart->cart_contents_total <= 100 
    ) { 
     $woocommerce->cart->add_discount('layer1_discount'); 
    } elseif ($woocommerce->cart->cart_contents_total >= 100 
     && $woocommerce->cart->cart_contents_total <= 200 
    ) {   
     $woocommerce->cart->add_discount('layer2_discount'); 
    } else {   
     $woocommerce->cart->remove_coupons('layer1_discount'); 
     $woocommerce->cart->remove_coupons('layer2_discount'); 
     $woocommerce->cart->calculate_totals(); 
    } 


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