WooCommerce: автоматическое изменение наличия товаров и отключение оформления заказа при отсутствии товара

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

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

Основные симптомы:

  • Товары с нулевым запасом отображаются как доступные или с возможностью покупки.
  • Покупатель может оформить заказ на товар, которого нет в наличии.
  • Отсутствие визуальных индикаторов о статусе наличия товара.

Пошаговое решение: автоматическое изменение статуса наличия и блокировка оформления

1. Включение управления запасами WooCommerce

Перейдите в WooCommerce > Настройки > Товары > Запасы и активируйте опцию:

  • Включить управление запасами

Это позволит WooCommerce автоматически обновлять статус товаров на основе количества на складе.

2. Запрет оформления заказа при отсутствии товара

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

add_filter('woocommerce_is_purchasable', function($purchasable, $product) {
    if (!$product->is_in_stock()) {
        return false; // Запрещаем покупку, если товара нет в наличии
    }
    return $purchasable;
}, 10, 2);

3. Автоматическое изменение статуса наличия товара

Если требуется более точный контроль, например, добавление кастомного текста или смена статуса, можно использовать хук 'woocommerce_get_availability':

add_filter('woocommerce_get_availability', function($availability, $product) {
    if (!$product->is_in_stock()) {
        $availability['availability'] = 'Товара нет в наличии';
        $availability['class'] = 'out-of-stock';
    }
    return $availability;
}, 10, 2);

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

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

  • Создайте тестовый товар с количеством на складе = 0.
  • Откройте страницу товара на фронтенде — должно отображаться сообщение «Товара нет в наличии».
  • Попробуйте добавить товар в корзину — кнопка «Добавить в корзину» должна быть неактивна или отсутствовать.
  • Если попытаться оформить заказ напрямую, WooCommerce должен блокировать этот процесс.

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

  • Ошибка: Товары с нулевым запасом всё равно доступны для заказа.
    Причина: Управление запасами в WooCommerce не включено или не настроено.
    Решение: Включить управление запасами в настройках WooCommerce.
  • Ошибка: Кастомный текст о наличии не отображается.
    Причина: Код вставлен некорректно или конфликтует с темой.
    Решение: Проверить правильность вставки кода и протестировать на дефолтной теме (например, Twenty Twenty-Three).
  • Ошибка: Заказы на отсутствующие товары проходят.
    Причина: Использование сторонних плагинов, которые переопределяют стандартное поведение WooCommerce.
    Решение: Отключить конфликтующие плагины и проверить поведение.

Практические советы по оптимизации и безопасности

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

Сравнение подходов: плагин vs код

Метод Плюсы Минусы Рекомендации
Настройка WooCommerce + кастомный код Легковесно, гибко, без сторонних зависимостей Требует навыков программирования, возможны конфликты кода Для разработчиков и кастомных сайтов
Использование плагинов управления запасами Простота настройки, дополнительные функции Может замедлить сайт, риск конфликтов с другими плагинами Для пользователей без навыков программирования
Как сделать автоматический XML Sitemap в WordPress без плагинов
13.01.2026
Как автоматизировать удаление старых медиафайлов в WordPress
03.03.2026
WooCommerce: автоматическое отключение оформления заказа при отсутствии товара
22.05.2026
Как изменить URL авторского блока WordPress без плагинов
21.02.2026
Как автоматизировать удаление спам комментариев в WordPress
01.01.2026