Автоматическое удаление товара из корзины WooCommerce при установке количества 0

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

В WooCommerce стандартное поведение при выставлении количества товара в корзине в 0 — это либо игнорирование изменения, либо установка количества 1. Поэтому пользователь может столкнуться с тем, что товар не удаляется из корзины автоматически при попытке обнулить количество. Это создаёт неудобства и снижает UX.

Для проверки проблемы:

  • Откройте страницу корзины WooCommerce.
  • Попробуйте установить количество товара в 0 и обновить корзину.
  • Если товар остаётся в списке с количеством 1 или 0 — стандартное поведение не удаляет товар.

Пошаговое решение: удаление товара при количестве 0 через хук WooCommerce

Реализуем удаление товара из корзины, если его количество установлено в 0, используя хук woocommerce_after_cart_item_quantity_update. Этот хук срабатывает после обновления количества товара в корзине.

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

add_action('woocommerce_after_cart_item_quantity_update', 'remove_cart_item_if_quantity_zero', 10, 3);
function remove_cart_item_if_quantity_zero($cart_item_key, $quantity, $old_quantity) {
    if ($quantity === 0) {
        WC()->cart->remove_cart_item($cart_item_key);
    }
}

Объяснение:

  • $cart_item_key — ключ товара в корзине.
  • Если новое количество $quantity равно 0, вызывается метод remove_cart_item для удаления товара из корзины.

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

Альтернативный подход: фильтрация обновления корзины

Если используется кастомная форма обновления корзины, можно добавить проверку на стороне сервера при обработке обновления корзины, например, через хук woocommerce_update_cart_action_cart_updated. Но описанный выше способ проще и надёжнее.

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

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

  • Добавьте товар в корзину.
  • Перейдите в корзину, установите количество товара в 0.
  • Нажмите «Обновить корзину».
  • Товар должен исчезнуть из списка без ошибок.
  • Проверьте, что количество товаров в корзине обновилось корректно в шапке сайта, если есть.

Для отладки можно временно добавить error_log() внутри функции, например:

error_log('Удаляем товар с ключом: ' . $cart_item_key);

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

  • Код не работает, товар не удаляется: Проверьте, что функция подключена и активна, а код расположен в functions.php или плагине. Убедитесь, что WooCommerce загружен к моменту выполнения (поместите код в хук init или позже). Также проверьте правильность параметров функции.
  • Количество не обновляется на фронтенде: Возможно, кеширование страницы мешает обновлению. Очистите кеш браузера и кеш плагинов кэширования.
  • Конфликт с другими плагинами, изменяющими корзину: Отключите временно другие плагины и проверьте работу. При конфликте нужно искать альтернативные хуки или методы.

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

  • Не используйте прямое обращение к глобальным переменным без проверки наличия объекта WC().
  • Если планируется масштабирование, обрабатывайте удаление товара асинхронно через AJAX, чтобы не блокировать страницу.
  • Для улучшения UX можно добавить уведомление пользователю через wc_add_notice() о том, что товар удалён из корзины.

Сравнение вариантов реализации удаления товара из корзины при 0 количестве

МетодКодПлюсыМинусы
Хук woocommerce_after_cart_item_quantity_updateНесколько строк PHP (пример выше)Простота, работает сразу после обновленияНе обрабатывает кастомные сценарии обновления корзины
Обработка в AJAXJS + PHP обработчикПлавный UX без перезагрузки страницыСложнее в реализации, требует JS навыков
Изменение шаблонов корзиныPHP + HTML шаблонГибкость в интерфейсеРиск конфликтов при обновлениях WooCommerce
Как удалить неиспользуемые термины таксономий в WordPress
26.03.2026
Как создать выбор позиции для товара в WooCommerce с пользовательским полем
10.03.2026
Как создать адаптивный слайдер в WordPress с нуля
30.11.2025
Как удалить и изменить атрибуты HTML в WooCommerce без плагинов
23.04.2026
Автоматическое удаление товара из корзины WooCommerce при установке количества 0
03.05.2026