WooCommerce: автоматическое исключение товаров без остатка из каталога

Диагностика проблемы: почему товары без остатка остаются в каталоге

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

Чтобы определить, отображается ли на вашем сайте такая проблема, проверьте список товаров в каталоге и обратите внимание на те, у которых количество на складе равно нулю или меньше. Если они доступны для просмотра (даже без возможности покупки), значит, нужно настроить их автоматическое исключение.

Как автоматизировать исключение товаров без остатка из каталога

Настройка WooCommerce для скрытия товаров без запаса

В WooCommerce есть встроенная опция, позволяющая скрывать товары без остатков. Чтобы ее активировать:

  1. Перейдите в WooCommerce > Настройки > Товары > Запасы.
  2. Найдите опцию Скрывать товары без запаса из каталога и поставьте галочку.
  3. Сохраните изменения.

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

Автоматическое исключение с помощью кода

Если нужна кастомизация, можно добавить фильтр в functions.php вашей темы или в плагин-сниппет. Пример кода для исключения товаров без запаса из каталога:

add_action('pre_get_posts', 'exclude_out_of_stock_products_from_catalog');
function exclude_out_of_stock_products_from_catalog($query) {
    if (!is_admin() && $query->is_main_query() && (is_shop() || is_product_category() || is_product_tag())) {
        $meta_query = $query->get('meta_query');
        if (!is_array($meta_query)) {
            $meta_query = [];
        }
        $meta_query[] = [
            'key' => '_stock_status',
            'value' => 'outofstock',
            'compare' => '!='
        ];
        $query->set('meta_query', $meta_query);
    }
}

Этот код исключит из каталога все товары, у которых статус запаса outofstock.

Пошаговая инструкция по внедрению решения

  1. Перейдите в админку WordPress > Внешний вид > Редактор темы.
  2. Откройте файл functions.php активной темы.
  3. Скопируйте и вставьте указанный выше код в конец файла.
  4. Сохраните изменения.
  5. Перейдите на страницу магазина и обновите ее.

Проверка результата после внедрения

Чтобы убедиться, что товары без остатка не отображаются:

  • Зайдите в каталог WooCommerce.
  • Найдите товары, у которых в админке запас равен нулю или меньше.
  • Проверьте, что такие товары не показываются в списке.
  • Если товар все еще отображается, очистите кеш сайта и браузера.

Частые ошибки и как их исправить

  • Ошибка: Код не работает, товары без запаса продолжают отображаться.
    Причина: Возможно, условия в pre_get_posts не срабатывают из-за кастомного запроса или конфликтов с плагинами.
    Решение: Убедитесь, что условие is_shop() || is_product_category() || is_product_tag() подходит именно для вашего шаблона каталога, или расширьте проверку.
  • Ошибка: Код вызывает сбои или белый экран.
    Причина: Синтаксическая ошибка в коде.
    Решение: Проверьте синтаксис, используйте отладчик или включите WP_DEBUG для поиска ошибок.
  • Ошибка: Товары с запасом тоже не отображаются.
    Причина: Неправильная логика в фильтре meta_query.
    Решение: Проверьте, что сравнение 'compare' => '!=' стоит именно для значения 'outofstock'.

Практические советы по безопасности и производительности

  • Всегда делайте бэкап сайта перед изменением functions.php.
  • Код для исключения товаров выполняется на каждом запросе каталога, поэтому держите фильтр максимально легким.
  • Используйте объектный кэш и кеширование страниц, чтобы снизить нагрузку при фильтрации товаров.
  • Если у вас большой каталог, рассмотрите использование специализированных плагинов для управления запасами и отображением товаров.

Сравнение вариантов: использование плагина vs кастомный код

ВариантПреимуществаНедостаткиКогда использовать
Встроенная настройка WooCommerceПростота, не требует кодаМало гибкости, не всегда подходитДля базового скрытия товаров без запаса
Кастомный код в functions.phpГибкость, можно настроить под любые условияТребует навыков, риск ошибокНужна точечная логика исключения
Плагины управления запасамиРасширенные функции, удобный интерфейсМожет замедлять сайт, требует поддержкиБольшие магазины с комплексными требованиями

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WooCommerce: автоматическое отключение неактивных способов оплаты
11.05.2026
Как автоматизировать перевод содержимого WordPress с помощью WPGPT
09.03.2026
Как удалить пустое содержимое из текста постов WordPress: практическое решение
29.01.2026
Оптимальная структура permalinks в WordPress: настройка и примеры
02.12.2025
WooCommerce: как автоматически исключить из каталога товары без остатка на складе
28.04.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙