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

В чем суть проблемы с обновлением количества товаров в WooCommerce

По умолчанию WooCommerce позволяет пользователям менять количество товара в корзине, и при этом изменяется итоговая сумма. Однако в некоторых бизнес-сценариях нужно делать так, чтобы при попытке изменить количество товар удалялся из корзины целиком. Например, если разрешено только заказывать товар в фиксированном количестве 1, или для предотвращения ошибок при обновлении данных корзины через AJAX.

Диагностика проблемы: как понять, что стандартное поведение не подходит

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

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

1. Добавляем обработчик на изменение количества в корзине

Для перехвата изменения количества используем хук woocommerce_update_cart_action_cart_updated, который вызывается после обновления корзины.

2. Проверяем измененное количество и удаляем товар, если количество отличается от 1

Пример кода для functions.php вашей темы или кастомного плагина:

add_action('woocommerce_update_cart_action_cart_updated', 'custom_remove_product_on_quantity_change', 20);
function custom_remove_product_on_quantity_change() {
    // Получаем глобальную корзину
    $cart = WC()->cart->get_cart();

    foreach ($cart as $cart_item_key => $cart_item) {
        $qty = $cart_item['quantity'];
        // Если количество отличается от 1, удаляем товар из корзины
        if ($qty != 1) {
            WC()->cart->remove_cart_item($cart_item_key);
        }
    }
}

3. Блокируем возможность редактирования количества на фронтенде

Чтобы избежать путаницы, лучше запретить пользователю менять количество и предоставить кнопку удаления:

add_filter('woocommerce_cart_item_quantity', 'disable_quantity_input_in_cart', 10, 3);
function disable_quantity_input_in_cart($product_quantity, $cart_item_key, $cart_item) {
    return $cart_item['quantity'];
}

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

Как проверить, что решение работает

  • Добавьте товар в корзину.
  • Попробуйте изменить количество товара в корзине и нажать обновить.
  • Если количество изменено на любое число, товар должен автоматически удалиться из корзины.
  • На странице корзины поле ввода количества должно быть заменено на статичный текст с числом.

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

  • Товар не удаляется при обновлении корзины: Проверьте, что хук woocommerce_update_cart_action_cart_updated правильно добавлен и функция вызывается. Можно добавить логирование с error_log.
  • Ошибка "Call to a member function remove_cart_item() on null": Убедитесь, что корзина инициализирована (WC()->cart доступен).
  • Пользователь может редактировать количество через JavaScript: дополнительно блокируйте изменение поля с помощью JavaScript или CSS, чтобы избежать конфликтов.
  • Конфликты с другими плагинами корзины: временно отключите остальные плагины, чтобы проверить совместимость.

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

  • Не используйте тяжелые операции внутри хука обновления корзины, чтобы не замедлять процесс.
  • Проверяйте, что функция вызывается только на странице корзины, чтобы не вызывать лишние операции на фронтенде.
  • При необходимости добавьте nonce-проверку для безопасности AJAX-запросов, если используете кастомные скрипты.
  • Для улучшения UX используйте AJAX для удаления товара сразу после изменения количества, без полной перезагрузки страницы.

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

МетодПлюсыМинусыКогда использовать
Хук woocommerce_update_cart_action_cart_updated с удалением товараПростота реализации, работает с нативным функционалом WooCommerceНе блокирует фронтенд изменение количества, требуется дополнительный кодДля сайтов с минимальной кастомизацией корзины
Блокировка поля количества через фильтр + JSПользователь не видит поле, невозможно изменить количествоНужно писать дополнительный JS, может влиять на мобильный UXЕсли хотите полностью запретить изменение количества
Полная замена корзины кастомным решениемМаксимальная гибкостьСложность разработки, поддержкаПри сложной логике корзины

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как установить и настроить ABC Pagination для удобной навигации в WordPress
02.04.2026
WooCommerce: как реализовать отложенную загрузку товаров по атрибутам
04.05.2026
Как удалить мета-тег генератора WordPress для повышения безопасности
02.11.2025
WooCommerce: как автоматически удалять товар из корзины при обновлении количества
05.06.2026
WooCommerce: как автоматически удалять товар из корзины при обновлении количества
23.06.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙