Разрешить обратный заказ для определенных продуктов на основе пользовательского поля в WooCommerce

#php #wordpress #woocommerce #hook-woocommerce #custom-fields

#php #wordpress #woocommerce #hook-woocommerce #пользовательские поля

Вопрос:

Я попытался разрешить обратные заказы для определенных продуктов в зависимости от пользовательского мета-поля таким образом:

 add_filter( 'woocommerce_product_backorders_allowed','filter_woocommerce_product_backorders_allowed', 10, 3 );
 function filter_woocommerce_product_backorders_allowed( $allow_backorder, $product_id, $product ){

$custom_stock = get_post_meta( $product->id, '_custom_stock', true );

if ( ! empty ( $custom_stock ) ) {
    $allow_backorder = true;
}
return $allow_backorder;
}
 

Но это не работает. Что я хочу, если мета-поле _custom_stock имеет какое-либо значение, то установите обратный заказ true для этого продукта. _custom_stock — это настраиваемое мета-поле, добавляемое в параметры woocommerce. Я могу сохранять, изменять и т. Д. Так что мета-поле — это работа.

Чего мне не хватает?

Комментарии:

1. @LoicTheAztec спасибо за ваш ответ. Все еще не работает. Этот метод работает с фильтром woocommerce_product_is_in_stock. При этом я могу установить для продукта значение in_stock. Может быть, у вас есть дополнительная идея, почему это не работает? Спасибо

2. Я действительно не вижу пользы в этом пользовательском поле, поскольку в WooCommerce есть встроенная функция, позволяющая выполнять обратный заказ на уровне продукта. Ваш код, похоже, в порядке, за исключением $product->id того, что его необходимо заменить на $product_id или на $product->get_id()

3. Спасибо @LoicTheAztec. Мы ежедневно обновляем количество запасов из XML-файла. Это делается для того, чтобы автоматически включить резервный заказ, если товар имеется в наличии на складе нашего поставщика.

4. Ваш код должен работать. Я больше не могу помочь, извините.

5. Нет проблем, сэр. Спасибо