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

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

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

Проверить проблему можно так:

  • Откройте страницу корзины.
  • Измените количество товара на 0.
  • Нажмите обновить корзину.
  • Если товар остался в списке с количеством 0, значит WooCommerce не удаляет его автоматически.

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

Реализуем решение на PHP, добавив фильтр, который при обновлении корзины проверит количество каждого товара. Если количество ≤ 0, удалим товар из корзины.

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

add_action('woocommerce_before_calculate_totals', 'wc_remove_zero_quantity_items', 10, 1);
function wc_remove_zero_quantity_items( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
        if ( isset( $cart_item['quantity'] ) && $cart_item['quantity'] <= 0 ) {
            $cart->remove_cart_item( $cart_item_key );
        }
    }
}

Объяснение кода:

  • woocommerce_before_calculate_totals — хук, который срабатывает перед пересчетом корзины.
  • Функция перебирает все товары корзины и удаляет те, у которых количество меньше или равно нулю.
  • Проверка is_admin() && ! DOING_AJAX предотвращает нежелательное срабатывание в административной части.

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

  • Обновите страницу корзины.
  • Установите количество товара в 0 и нажмите "Обновить корзину".
  • Товар должен исчезнуть из списка.
  • Проверьте, что сумма корзины пересчиталась корректно и оформление заказа работает без ошибок.

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

  • Код не работает после обновления корзины: возможно, тема или другой плагин переопределяет логику корзины. Проверьте конфликты, отключив плагины и переключившись на стандартную тему.
  • Удаление товара происходит не сразу: убедитесь, что корзина обновляется через форму, а не AJAX-запросами. Для AJAX-обновления нужен дополнительный JavaScript.
  • Ошибка «Undefined function» или синтаксическая ошибка: проверьте, что код вставлен корректно, без опечаток.

Практические советы по улучшению UX и производительности

  • Реализуйте сообщение пользователю при удалении товара с количеством 0 — например, через wc_add_notice().
  • Для AJAX-обновления корзины используйте хуки wp_ajax_woocommerce_update_cart и JavaScript для мгновенного удаления товара без перезагрузки страницы.
  • Оптимизируйте время загрузки корзины, избегая лишних запросов и тяжелых плагинов.

Пример улучшенного уведомления пользователя при удалении товара

add_action('woocommerce_before_calculate_totals', 'wc_remove_zero_quantity_items_with_notice', 10, 1);
function wc_remove_zero_quantity_items_with_notice( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
        if ( isset( $cart_item['quantity'] ) && $cart_item['quantity'] <= 0 ) {
            $cart->remove_cart_item( $cart_item_key );
            wc_add_notice( sprintf('Товар "%s" удалён из корзины, так как количество равно 0.', $cart_item['data']->get_name()), 'notice' );
        }
    }
}

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

МетодПлюсыМинусы
Использование PHP-хука woocommerce_before_calculate_totalsПростая реализация, не требует сторонних плагиновТребует перезагрузки страницы корзины; не работает с AJAX по умолчанию
AJAX-обработка через JavaScript + PHPМгновенное удаление без перезагрузки страницы, лучший UXСложнее в реализации, требует дополнительного JS-кода
Плагины для управления корзинойГотовое решение, поддержка и обновленияМожет загружать сайт, потенциально конфликтовать с другими плагинами
Как удалить неиспользуемые посты в WordPress с помощью кода
19.03.2026
Как добавить логику вызова шорткода в WordPress
04.02.2026
Как создать комплексный фильтрованный список на WordPress
22.12.2025
Автоматическое удаление товара из корзины WooCommerce при установке количества 0
03.05.2026
Как создать адаптивный слайдер в WordPress с нуля
30.11.2025