2017-08-11 121 views
1

到目前爲止,這是我的本錢:如果WooCommerce車項目是在缺貨不適用優惠券

add_filter('woocommerce_coupon_is_valid','coupon_always_valid',99,2); 
function coupon_always_valid($valid, $coupon){ 
    global $woocommerce; 
    $valid = true; 
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) { 
     // if($values['data']->backorders_allowed()){ //check if backorders are allowed on this product 
      // get the stock quantity - returns the available amount number 
      $stock_info = $values['data']->get_stock_quantity(); 

      if($stock_info < 1){ 
       $vaild = false; 

       break; 
      } 
     } 
    // give error message... 

    return $valid ; 
} 

我不明白爲什麼這個選項是沒有內置woocommerce開始。我們想要清理庫存中的貨物,但也要對我們的產品進行延期交貨,但我們不希望對任何延期交貨給予折扣。

任何幫助,將不勝感激。

回答

1

。在你的代碼一個錯字錯誤$vaild = false;(錯誤的變量名應該是$valid)和EXTA },你有評論if語句,導致錯誤

而且下面,我已經(被WC()->cart更換global $woocommerce$woocommerce->cart)升級你的代碼到一個更實際的版本:

add_filter('woocommerce_coupon_is_valid', 'coupon_always_valid', 99, 2); 
function coupon_always_valid($valid, $coupon){ 

    $valid = true; 

    foreach (WC()->cart->get_cart() as $cart_item) { 
     // if($values['data']->backorders_allowed()){ //check if backorders are allowed on this product 
     // get the stock quantity - returns the available amount number 
     $stock_info = $cart_item['data']->get_stock_quantity(); 

     if($stock_info < 1){ 
      $valid = false; ## <== HERE a typo error 
      break; 
     } 
     // } ## <== HERE commented 
    } 
    return $valid ; 
} 

代碼放在您的活動子主題的function.php文件(或主題)還是在任何插件文件中。

下面這段代碼應該沒有錯誤

+0

真棒!這樣可行。謝謝!現在,我將嘗試通過以下方式擴展它: 更新錯誤,解釋優惠券代碼不起作用的原因 和 允許優惠券適用於沒有延期交貨的產品。現在 - 如果一個產品被重新訂購,但其他產品不是,則不會應用優惠券代碼。 – Shinosky

相關問題