【问题标题】:If WooCommerce Cart items are on backorder do not apply coupon如果 WooCommerce 购物车商品缺货,请不要使用优惠券
【发布时间】:2017-08-11 18:48:53
【问题描述】:

到目前为止,这是我所拥有的:

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 中。我们希望清空我们的库存,但也对我们的产品进行延期交货,但我们不想对任何延期交货的订单给予折扣。

任何帮助将不胜感激。

【问题讨论】:

    标签: php wordpress woocommerce cart coupon


    【解决方案1】:

    $vaild = false; 的代码中存在拼写错误(错误的变量名应为 $valid)和一个额外的 },因为您已评论if 语句,导致错误

    另外,我已将您的代码升级到更实际的版本(将global $woocommerce$woocommerce-&gt;cart 替换为WC()-&gt;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 文件或任何插件文件中。

    现在这段代码应该可以正常工作了

    【讨论】:

    • 太棒了!这样可行。谢谢!现在我将尝试通过以下方式扩展它:更新解释为什么优惠券代码不起作用的错误和允许优惠券适用于未延期交货的产品。现在 - 如果一种产品被延期订购但其他产品没有,则不会应用优惠券代码。
    • @Shinosky 你做到了吗?我有同样的问题。我还希望优惠券仅适用于非延期交货产品。如果你这样做了,请分享代码。谢谢。
    • 代码很棒,但如果有一些不符合条件的商品,它会从购物车中删除优惠券 - 即使有更多商品符合优惠券的条件。
    • @DemuriCelidze 此代码是根据问题要求编写的,并回答该要求......为了您的使用,您需要对其进行调整。
    • @LoicTheAztec 如果您能帮助定制,我将不胜感激。如果缺货商品也在购物车中,我完全迷失了如何为库存商品设置优惠券而不禁用它。
    猜你喜欢
    • 2019-09-04
    • 1970-01-01
    • 2020-08-12
    • 2021-03-18
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    相关资源
    最近更新 更多