WooCommerce: автоматическое отключение товаров при отсутствии запасов в настройках складского учёта

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

В WooCommerce опция автоматического скрытия или отключения товаров при отсутствии запасов иногда не работает, даже если включён складской учёт. Чаще всего этому причиной являются:

  • Неправильные настройки управления запасами в карточках товаров
  • Конфликты с темой или плагинами, которые переопределяют отображение товаров
  • Кеширование страниц, из-за которого изменения статуса товара не отображаются
  • Ошибки в пользовательских функциях, связанных с управлением запасами

Как проверить, активирован ли складской учёт и опция скрытия

  1. Перейдите в WooCommerce > Настройки > Товары > Запасы.
  2. Убедитесь, что включена опция «Включить управление запасами» (enable stock management).
  3. Проверьте, что активна опция «Скрывать товары без запасов» (out of stock visibility), она отвечает за автоматическое скрытие товаров, если запас равен нулю.

Пошаговое решение: как правильно настроить автоматическое отключение товаров

1. Включение управления запасами для конкретных товаров

В карточке товара на вкладке «Запасы» убедитесь, что отмечено Включить управление запасами на уровне товара. Без этого WooCommerce не будет отслеживать остатки для данного товара.

update_post_meta( $product_id, '_manage_stock', 'yes' );

2. Включение скрытия товаров без запасов в настройках WooCommerce

add_filter( 'woocommerce_product_is_visible', function( $visible, $product_id ) {
    $product = wc_get_product( $product_id );
    if ( ! $product->is_in_stock() ) {
        return false;
    }
    return $visible;
}, 10, 2 );

Этот код можно добавить в файл functions.php темы, если настройки по умолчанию не работают.

3. Очистка кеша и проверка кеш-плагинов

Если у вас установлен кеширующий плагин (например, WP Rocket, W3 Total Cache, или др.), очистите кеш сайта полностью и отключите плагин на время тестирования. Иногда кеш не обновляет статус товаров.

4. Проверка темы и плагинов на конфликты

Активируйте стандартную тему (например, Storefront) и отключите все плагины, кроме WooCommerce. Проверьте, работает ли автоматическое скрытие. Если да, включайте плагины по одному, чтобы выявить конфликтующий.

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

  • Создайте тестовый товар с включённым складским учётом и выставьте запас = 0.
  • Обновите страницу каталога и карточку товара с отключённым кешем.
  • Товар должен быть скрыт или кнопка «В корзину» должна быть неактивна.
  • Если используется кастомная тема, проверьте вывод $product->is_in_stock() — он должен возвращать false для товаров без запасов.

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

  • Ошибка: Включено управление запасами глобально, но отключено на уровне товара.
    Исправление: Включите управление запасами для каждого товара вручную или через код.
  • Ошибка: Кеш не обновляет отображение товаров.
    Исправление: Очистите кеш и отключите кеширующие плагины на время теста.
  • Ошибка: Кастомная тема переопределяет шаблоны WooCommerce без учёта статуса запасов.
    Исправление: Отредактируйте шаблоны, используя проверку $product->is_in_stock().
  • Ошибка: Плагины управления каталогом или складом конфликтуют с WooCommerce.
    Исправление: Проверьте совместимость и обновите плагины.

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

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

Таблица сравнения вариантов решения

МетодПреимуществаНедостаткиПрименимость
Встроенные настройки WooCommerceПростота настройки, не требует кодаИногда не работает с кастомными темамиПодходит для большинства сайтов
Код в functions.php с фильтром woocommerce_product_is_visibleГибкость, работает с кастомными темамиТребует базовых знаний PHPДля разработчиков и продвинутых пользователей
Плагины управления запасамиДополнительные функции, отчётыМогут конфликтовать и замедлять сайтДля крупных магазинов с расширенным учётом
Автоматическое удаление товаров из WooCommerce при нулевом остатке
25.04.2026
Автоматическое изменение цен в WooCommerce по расписанию
28.04.2026
Как установить уникальные заголовки H1 для каждой страницы WordPress
18.02.2026
Создание динамического фильтра в WordPress для каталога
22.12.2025
Автоматическое удаление старого контента в WordPress
13.04.2026