#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. Нет проблем, сэр. Спасибо