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

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

В стандартном WooCommerce возможность оформления заказа доступна даже если товар отсутствует на складе (stock quantity = 0), при условии, что включена опция «Разрешить предзаказы» или просто не настроено ограничение. Это может привести к недовольству клиентов и росту количества отмененных заказов.

Проверить, как ведет себя ваш магазин:

  • Откройте страницу товара с нулевым остатком;
  • Если кнопка «Добавить в корзину» активна, значит оформление заказа возможно;
  • Если нет, то возможно включены настройки ограничения или используются сторонние плагины.

Как отключить оформление заказа при отсутствии товара: пошаговое решение

1. Проверка базовых настроек WooCommerce

В админке WooCommerce зайдите в WooCommerce → Настройки → Продукты → Запасы. Проверьте:

  • Включена ли опция Включить управление запасами;
  • Убедитесь, что опция Разрешить предзаказы отключена или настроена правильно;
  • Параметр Отключить оформление заказа при отсутствии товара включен (если есть).

2. Добавление кода для автоматического отключения кнопки "Добавить в корзину" при отсутствии товара

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

add_filter('woocommerce_is_purchasable', 'disable_purchase_if_out_of_stock', 10, 2); function disable_purchase_if_out_of_stock($purchasable, $product) {     if (!$product->is_in_stock()) {         return false;     }     return $purchasable; }

Этот фильтр полностью отключит возможность покупки товара, если он отсутствует на складе.

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

  • Очистите кэш сайта и браузера;
  • Перейдите на страницу товара с нулевым запасом;
  • Убедитесь, что кнопка «Добавить в корзину» отсутствует или заменена на «Нет в наличии»;
  • Попробуйте добавить товар в корзину — действие должно быть недоступно.

Частые ошибки и способы их устранения

  • Код не работает, кнопка все равно активна: убедитесь, что в теме или плагинах нет переопределения шаблонов WooCommerce, которые принудительно выводят кнопку.
  • Код вызывает ошибки PHP: проверьте правильность синтаксиса, используйте отладчик или включите WP_DEBUG;
  • Включены предзаказы: если разрешены предзаказы, товары будут доступны для оформления, даже при отсутствии на складе. Отключите эту опцию, если хотите полностью блокировать заказ.

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

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

Сравнение вариантов реализации отключения оформления заказа

МетодПлюсыМинусыПример кода
Настройки WooCommerceПростота, без кодаОграниченные возможности, не всегда отключает полностью
Фильтр woocommerce_is_purchasableПолный контроль, гибкостьТребуется базовый PHP, может конфликтовать с кастомными темамиВ статье
Плагины управления запасамиДополнительные функции, интеграцияМогут быть платными, усложняют системуЗависит от плагина
WooCommerce: как автоматически изменять наличие товаров и отключать оформление заказа при отсутствии товара
29.06.2026
WooCommerce: как автоматически менять цены товаров при смене валюты
07.06.2026
Как использовать хуки для отложенного выполнения кода в WordPress
07.12.2025
Как изменить URL авторского блока WordPress без плагинов
21.02.2026
Как создать настройки плагина WordPress: подробное руководство для разработчиков
03.12.2025