2017-08-11 58 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

相关问题