Почему важно автоматически отключать распроданные товары в WooCommerce
В интернет-магазинах на WooCommerce часто возникает ситуация, когда товар распродан, но остается доступным для покупки, что приводит к разочарованию клиентов и дополнительным обращениям в поддержку. Автоматическое отключение товара после распродажи помогает поддерживать актуальность ассортимента и улучшает пользовательский опыт.
Диагностика проблемы: как понять, что товар не отключается после распродажи
Проверьте следующие моменты, если товар продолжает отображаться и продаваться после того, как его количество стало 0 или ниже:
- В настройках WooCommerce отключена опция управления запасами;
- Товар не настроен на управление запасом (галочка «Управлять запасом?» не активирована);
- Нет кастомного кода, который отключает товар при нулевом запасе;
- Кэш сайта или плагина мешает обновлению статуса товара.
Пошаговое решение: как автоматически отключать товар после распродажи
1. Включите управление запасом для товара
В админке WooCommerce откройте карточку товара и на вкладке Запасы убедитесь, что активирована опция Управлять запасом?. Если нужно массово включить для множества товаров, используйте Bulk Edit.
2. Добавьте кастомный код для автоматического отключения товаров с нулевым запасом
Добавьте следующий код в файл functions.php вашей дочерней темы или в плагин для кастомных функций:
add_action('woocommerce_product_set_stock', 'auto_disable_product_on_out_of_stock', 10, 1);function auto_disable_product_on_out_of_stock($product) { if (!$product->managing_stock()) { return; } $stock_quantity = $product->get_stock_quantity(); if ($stock_quantity <= 0) { $product->set_catalog_visibility('hidden'); // Скрыть товар из каталога $product->set_status('draft'); // Перевести товар в черновик $product->save(); } else { // Опционально вернуть товар в опубликованный статус и видимость, если появился запас if ($product->get_status() === 'draft') { $product->set_status('publish'); $product->set_catalog_visibility('visible'); $product->save(); } }}Этот код срабатывает при обновлении запаса товара и переводит товар в статус черновик и скрывает из каталога, если запас 0 или меньше.
3. Очистите кэш сайта и плагинов
После внедрения изменений очистите кэш WordPress, плагинов кеширования и CDN, чтобы убедиться, что изменения вступили в силу.
Проверка результата после внедрения
- Создайте тестовый товар с включённым управлением запасом и запасом 1;
- В админке уменьшите запас до 0 и сохраните;
- Перейдите на страницу товара на сайте — товар должен исчезнуть из каталога и стать недоступен для покупки;
- Верните запас товара больше 0, обновите и проверьте, что товар снова отображается и доступен.
Частые ошибки и как их исправить
- Код не срабатывает при массовом обновлении запасов через CSV. Решение: добавить вызов функции для массовых изменений вручную или через wp-cli, либо запускать функцию по cron при обновлении запасов.
- Товар виден в результатах поиска, хотя скрыт из каталога. Решение: дополнительно добавить фильтр, скрывающий товары со статусом «черновик» из поисковой выдачи и виджетов.
- Кэш мешает обновлению статуса товара. Очистите кэш WordPress, плагинов и CDN, отключите кэширование на время тестирования.
- Ошибки в синтаксисе кода. Проверяйте код через IDE или PHP линтер перед загрузкой на сайт.
Практические советы по безопасности и производительности
- Не храните кастомный код в файле
functions.phpосновной темы — используйте дочернюю тему или отдельный плагин. - При большом количестве товаров лучше запускать проверку и обновление статусов через WP-Cron, чтобы избежать нагрузки при каждом изменении запаса.
- Логируйте изменения статусов товаров, чтобы отслеживать автоматические действия и быстро реагировать на сбои.
- Регулярно обновляйте WooCommerce и WordPress для совместимости с вашим кастомным кодом.
Сравнение вариантов реализации автоматического отключения товаров
| Метод | Плюсы | Минусы |
|---|---|---|
| Встроенное управление запасами + ручное отключение | Простота, не требует кода | Зависит от человека, можно забыть |
| Кастомный код на хуках WooCommerce | Автоматизация, точное управление, не требует плагинов | Требует навыков разработки, риск ошибок |
| Использование плагинов управления запасами и видимостью | Много функций, поддержка | Дополнительная нагрузка, лицензии |