WooCommerce: автоматическое отслеживание и отключение товаров по наличию в Elementor

Диагностика проблемы с отображением товаров по наличию в WooCommerce и Elementor

При создании интернет-магазина на WooCommerce с использованием Elementor часто возникает задача автоматически скрывать или отключать товары, которых нет в наличии. Пользователи хотят, чтобы такие товары не отображались на витрине или были явно помечены как недоступные. Однако базовые настройки WooCommerce и Elementor не всегда позволяют это реализовать без кастомных доработок.

Проблемы, которые встречаются чаще всего:

  • Товары без наличия показываются как доступные для покупки.
  • Отсутствует автоматическое скрытие или изменение статуса товаров при изменении наличия.
  • Элементы Elementor для вывода товаров не учитывают статус наличия.

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

1. Проверка и настройка статуса наличия в WooCommerce

Для начала убедитесь, что в карточках товаров правильно настроено управление запасами. Это ключ к автоматизации:

  • В админке WordPress перейдите в «Товары» > откройте нужный товар.
  • Вкладка «Запасы»: включите «Управление запасами?».
  • Укажите актуальное количество товара.
  • Проверьте, что статус «В наличии» или «Нет в наличии» корректно отображается.

2. Автоматическое изменение статуса публикации товара при отсутствии товара

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

Добавьте следующий код в functions.php вашей дочерней темы или в кастомный плагин:

add_action('woocommerce_product_set_stock', 'auto_unpublish_out_of_stock_products', 10, 1);
function auto_unpublish_out_of_stock_products( $product ) {
    if ( ! $product instanceof WC_Product ) {
        return;
    }
    if ( $product->is_in_stock() ) {
        // Опубликовать товар, если он есть в наличии
        $product->set_status('publish');
    } else {
        // Снять с публикации, если товара нет в наличии
        $product->set_status('draft');
    }
    $product->save();
}

Этот код реагирует на изменение запасов и автоматически переводит товар в статус draft (черновик) при отсутствии наличия, и возвращает в публикацию при появлении товара.

3. Настройка отображения в Elementor

Для вывода товаров в Elementor используйте виджет «WooCommerce Products» или кастомные запросы. После автоматического снятия с публикации товаров в статусе draft они не будут отображаться в каталоге.

Если вы хотите показывать товары, но помечать их как «Нет в наличии», без скрытия, используйте условные теги в Elementor Pro с динамическим контентом, например, в заголовке или кнопке «Купить»:

if ( ! $product->is_in_stock() ) {
    echo '<span class="out-of-stock">Нет в наличии</span>';
} else {
    // Кнопка купить
}

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

Чтобы убедиться, что решение работает:

  1. Измените количество товара на 0 в админке WooCommerce.
  2. Проверьте, что товар исчез из каталога на сайте (если используется автоматическое снятие с публикации).
  3. Если используется отображение с пометкой «Нет в наличии», проверьте вывод этой пометки на странице товара и в каталоге.
  4. Верните количество товара > 0 и убедитесь, что товар вновь отображается в каталоге.

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

  • Хук не срабатывает при изменении наличия через импорт или массовое обновление. Решение: Для массового импорта используйте специальные хуки или обработчики событий, либо запускайте функцию вручную через WP CLI.
  • Товар не скрывается из каталога, потому что статус не меняется. Проверьте, что код добавлен в активную тему и нет конфликтов с другими плагинами, которые могут переопределять статус товара.
  • В Elementor отображаются устаревшие данные. Очистите кэш сайта, а также кэш плагинов кеширования (например, WP Rocket, W3 Total Cache).

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

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

Сравнение вариантов решения задачи скрытия товаров по наличию

МетодОписаниеПлюсыМинусы
Автоматическая смена статуса товараКод меняет статус товара на draft при отсутствии запасовПолностью скрывает товар из каталога, автоматизацияМожет конфликтовать с импортом, требует тестирования
Отображение товара с пометкой "Нет в наличии"Показывает товар, но информирует пользователя о статусеУдобно для клиентов, не скрывает товарТребует кастомного шаблона или Elementor Pro для динамического контента
Использование плагинов для управления наличиемПлагины с расширенным функционалом управления запасамиГотовые решения, поддержка обновленийМогут быть платными, добавляют нагрузку
WooCommerce: как изменить количество отображаемых вариантов товара в Elementor
05.05.2026
Как добавить собственный CSS в Elementor без потери при обновлении
12.12.2025
WooCommerce: как разрешить покупателям самостоятельно изменять количество товара в корзине
15.05.2026
Как создать автоматические блоки контента в Elementor через WPRemark
22.02.2026
WooCommerce: как добавить дополнительное поле в форму оформления заказа
10.05.2026