Если товары WooCommerce Cart находятся на складе, не применяйте купон

Пока это то, что у меня есть:

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) и экста } как вы прокомментировали утверждение 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 вашей активной дочерней темы (или темы) или также в любой файл плагина.

Теперь этот код должен работать без ошибок

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector