2015-11-16 104 views
4

這是我使用的代碼:woocommerce申請優惠券編程錯誤

if (!is_admin()): 
add_action('woocommerce_before_cart', 'apply_matched_coupons'); 
//add_action('woocommerce_before_cart_table', 'apply_matched_coupons'); 
//add_action('woocommerce_before_checkout_form', 'apply_matched_coupons'); 

function apply_matched_coupons() { 
global $woocommerce; 
$coupon_code = 'somecodehere'; 

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

    if ($woocommerce->cart->cart_contents_total >= 1) { 
     $woocommerce->cart->add_discount($coupon_code); 
     wc_print_notices(); 
    } 

} 

endif; 

我遇到的問題是,當我去結帳頁面的優惠券仍然得到應用。它不適用於購物車,這是所需的結果,但我不希望它在這種情況下應用。

任何幫助?

+0

我很困惑什麼「條件」你在說什麼。你能解釋一下使用某種用戶故事,發生的和預期的結果嗎?即用戶訪問購物車,X發生,她然後繼續結帳,Y發生,等等 – rnevius

+0

@ rnevius肯定和我甚至不知道我在做什麼工作,因爲我認爲這是緩存不知何故。好。以下是大圖:添加到購物車時添加優惠券代碼。但是,如果您是購物車管理員或結算頁面上的店鋪管理員或經理,則不應用優惠券。下一階段,我知道它的工作是隨機添加它,如果你不是店管理員或經理,但我仍然在努力通過它 –

回答

4

根據你的解釋,這聽起來像你應該使用woocommerce_add_to_cart掛鉤,當產品被成功添加到購物車其上運行。我也不認爲你應該使用is_admin(),因爲這只是檢查你是否在管理頁面上...如果當前用戶是管理員,則不會。

我會做類似如下:

add_action('woocommerce_add_to_cart', 'apply_matched_coupons'); 

function apply_matched_coupons() { 
    // If the current user is a shop admin 
    if (current_user_can('manage_woocommerce')) return; 
    // If the user is on the cart or checkout page 
    if (is_cart() || is_checkout()) return; 

    $coupon_code = 'somecodehere'; 

    if (WC()->cart->has_discount($coupon_code)) return; 

    WC()->cart->add_discount($coupon_code); 
} 
+0

你真了不起。我甚至可以看到事情從我的最後變得過於複雜。現在我需要重構WC() - > cart-> add_discount($ coupon_code);隨機運行。非常感謝你的朋友。 –