Как запросить только товары со статусом "в наличии" в WooCommerce?

2 апр. 2017 г., 04:51:36
Просмотры: 17.1K
Голосов: 6

Я пытаюсь создать запрос, который возвращает только товары в наличии в заданной категории товаров.

Вот мой рабочий код, где я сначала получаю все товары категории, а затем перебираю их, пока не найду тот, что есть в наличии.

function CheckCategoryStock( $catToCheck ) {

    // Аргументы для выборки товаров
    $args = array(
        'posts_per_page' => -1,          // Получить все товары
        'post_type'      => 'product',   // Тип записи - товар
        'hide_empty'     => 1,           // Скрыть пустые категории
        'product_cat'    => $catToCheck, // Идентификатор категории
    );

    // Создаем новый запрос
    $query = new WP_Query( $args );

    // Если есть товары
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) : $query->the_post();
            global $product;
            // Проверяем наличие товара
            if ( $product->is_in_stock() ) {
                $catCounter = 0;
                return 1;  // Возвращаем 1 если найден товар в наличии
            }        
        endwhile;
    }    

    return 0;  // Возвращаем 0 если товаров в наличии нет

}    

Такой способ работает, но иногда код выполняется медленно, так как ему приходится перебирать множество товаров, прежде чем найти тот, что есть в наличии.

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

Посмотрите это, возможно, это вам поможет: Запрос записей любого типа, но только с товарами в наличии

flomei flomei
2 апр. 2017 г. 05:06:06
Все ответы на вопрос 1
1
13

Отлично сработало!

Только что добавил это:

        'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock',
            'compare' => '=',
        )
    )      

Спасибо!

2 апр. 2017 г. 05:19:09
Комментарии

Я рад, что это сработало для вас. Если вы отметите этот пост как правильный ответ на ваш вопрос, это поможет статистике "неотвеченных вопросов". ;-D Кроме того, люди увидят, что здесь могут найти решение своей проблемы.

flomei flomei
3 апр. 2017 г. 00:09:48