2013-11-20 77 views
2

我需要找到一種方法來檢查優惠券是否適用於Woocommerce結帳,如果是的話我想做點什麼。我試圖尋找這一點,並找不到解決方案。檢查優惠券是否適用於商業

這裏是什麼我想一個簡化版本:

add_action('woocommerce_before_cart_table', 'apply_product_on_coupon'); 
function apply_product_on_coupon() { 
    global $woocommerce; 
    $coupon_id = '12345'; 

     if($woocommerce->cart->applied_coupons === $coupon_id) { 
     echo 'YAY it works'; 
    } 
} 

因此,這是不檢查,如果在購物車中存在優惠券的正確方法? if($woocommerce->cart->applied_coupons === $coupon_id)

+0

您的測試結果如何? – qwertynl

+0

在這個例子中,如果將優惠券「12345」應用於購物車,那麼它將回應「Yay it works」。我真正打算做的是在免費產品中加入優惠券,除了檢查我的優惠券是否適用之外,我已經把所有東西都放下了。 – Derek

+0

你的測試實際上是否迴應'YAY it works'? – maiorano84

回答

4

從你的例子中,像這樣的東西可能會起作用。這是未經測試,但應該給你指出正確的方向邁出的一步:

add_action('woocommerce_applied_coupon', 'apply_product_on_coupon'); 
function apply_product_on_coupon() { 
    global $woocommerce; 
    $coupon_id = '12345'; 
    $free_product_id = 54321; 

    if(in_array($coupon_id, $woocommerce->cart->get_applied_coupons())){ 
     $woocommerce->cart->add_to_cart($free_product_id, 1); 
    } 
} 
+1

以下是[購物車類](http://docs.woothemes.com/wc-apidocs/class-WC_Cart.html#_add_to_cart) – maiorano84

+0

@Derek上的文檔我的猜測是行動鉤子。查看我的編輯。 – maiorano84

+1

明白了,謝謝! – Derek

2
global $woocommerce; 
if (!empty($woocommerce->cart->applied_coupons)) 
{ 
     //print_r($woocommerce->cart->applied_coupons); - keys of coupons here 
} 
+0

請解釋你的代碼。 –

1

這可能是一個年齡問題,但一個簡單的解決方案是使用

WC()->cart->applied_coupons 

這個返回數組列表應用優惠券,然後您可以使用foreach,for或in_array來檢查應用的優惠券。

希望對您有所幫助