如果 WooCommerce 购物车商品缺货,请不要使用优惠券
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){
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 中。我们想耗尽我们的库存,但也接受我们产品的延期交货,但是,我们不想给任何延期交货折扣。
如有任何帮助,我们将不胜感激。
您的代码中存在 $vaild = false;
的拼写错误(错误的变量名称应为 $valid
)和一个 exta }
因为您评论了一个 if 语句,导致了错误。
此外,我已将您的代码升级到更实际的版本(将 global $woocommerce
和 $woocommerce->cart
替换为 WC()->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 文件或任何插件文件。
现在这段代码应该可以正常工作了
到目前为止,这是我得到的:
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 中。我们想耗尽我们的库存,但也接受我们产品的延期交货,但是,我们不想给任何延期交货折扣。
如有任何帮助,我们将不胜感激。
您的代码中存在 $vaild = false;
的拼写错误(错误的变量名称应为 $valid
)和一个 exta }
因为您评论了一个 if 语句,导致了错误。
此外,我已将您的代码升级到更实际的版本(将 global $woocommerce
和 $woocommerce->cart
替换为 WC()->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 文件或任何插件文件。
现在这段代码应该可以正常工作了