我试图根据购物车数量和库存数量来限制优惠券的使用 . 首先,我想检查库存是否小于购物车中的数量 . 如果是这样,我只想给库存中的数量打折,并从超出数量中删除优惠券,但允许延期交货的实际价格超过数量 .

举一个例子,让我们说 Item1 有2个库存并且允许延期交货 . 现在一个客户添加到他的购物车 Item1 数量3.现在当客户添加优惠券我想给他折扣仅数量为2并从一个删除优惠券 . 因为库存可用2但客户购买3.这可能吗?

我所指的原始代码是If WooCommerce Cart items are on backorder do not apply coupon

在这里,我试图修改它来解决我的问题 .

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($cart_item['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;
            break;
        }

        if($stock_info >= 1 && $cart_item['quantity'] >= $stock_info){
            /*
            $valid = false;
            break;
            */
           // check for quantity
        }

    }
}
return $valid ;
}

我无法弄清楚如何根据同一产品的数量添加优惠券 . 请帮忙 . 谢谢 .