Условный мета-запрос 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, когда включены резервные заказы.

Author: Gabriel, 2016-03-02

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

Https://codex.wordpress.org/Class_Reference/WP_Meta_Query

 3
Author: Adam, 2016-03-02 09:29:01