Условный мета-запрос WooCommerce
Что касается этого вопроса, я знаю, как его решить, но я надеюсь, что есть лучший/более быстрый способ его решения.
У меня есть пользовательский мета-запрос в моем цикле продуктов, который не отображает мой продукт, если запас равен 0, но я хочу сделать это только тогда, когда для продукта задано значение "нет". Возможно ли это без выполнения 2 запросов (один, который получает все сообщения и проверяет, включены ли резервные заказы, и один, который выполняет мета-запрос только в том случае, если резервные заказы не включены включено)?
Вот мой пользовательский мета-запрос в моем functions.php
:
add_action( 'woocommerce_product_query', 'woo_custom_outofstock_query' );
function woo_custom_outofstock_query( $q ) {
$meta_query = $q->get( 'meta_query' );
$meta_query[] = array(
'key' => '_stock',
'value' => '0.000000',
'compare' => 'NOT IN'
);
$q->set( 'meta_query', $meta_query );
}
РЕДАКТИРОВАТЬ: Я изменил запрос на:
$meta_query = $q->get( 'meta_query' );
$meta_query[] = array(
'key' => '_stock',
'value' => '0.000000',
'compare' => 'NOT IN'
);
$meta_query[] = array(
'key' => '_backorders',
'value' => 'no',
'compare' => '!='
);
$q->set( 'meta_query', $meta_query );
Это должно сработать, но по какой-то причине это все еще не работает. Кроме того, когда я скрываю товары, которых нет в наличии, в настройках WooCommerce по-прежнему не отображаются товары с запасом 0, когда включены резервные заказы.
1 answers
Отношение по умолчанию для мета-запроса равно AND
, поэтому, когда у вас есть два условия, они будут рассматриваться как таковые:
$meta_query[] = array(
'key' => '_stock',
'value' => '0.000000',
'compare' => 'NOT IN'
);
$meta_query[] = array(
'key' => '_backorders',
'value' => 'no',
'compare' => '!='
);
Получить все продукты с _stock
мета-значением НЕ В 0.000000
И _backorders
НЕ РАВНЫЙ no