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

Проблема: товар остаётся в корзине при обновлении количества в WooCommerce

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

Диагностика проблемы

Для проверки, как работает корзина в вашем магазине, сделайте следующее:

  1. Добавьте товар в корзину.
  2. Перейдите на страницу корзины.
  3. Попробуйте изменить количество товара на 0 и нажать "Обновить корзину".
  4. Обратите внимание, останется ли товар или будет удалён.

Если товар не удаляется, значит WooCommerce не обрабатывает количество "0" как команду на удаление.

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

Чтобы исправить это, добавим пользовательский код, который будет удалять товар из корзины, если его количество обновлено до 0.

1. Добавляем фильтр на обновление корзины

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

add_action('woocommerce_before_cart', 'wc_remove_products_with_zero_quantity');

function wc_remove_products_with_zero_quantity() {
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        if ( isset( $_POST['cart'][$cart_item_key]['qty'] ) ) {
            $qty = intval( $_POST['cart'][$cart_item_key]['qty'] );
            if ( $qty === 0 ) {
                WC()->cart->remove_cart_item( $cart_item_key );
            }
        }
    }
}

Этот хук срабатывает перед выводом корзины. Мы перебираем все товары и смотрим, если в POST-запросе пришло количество 0, то удаляем товар.

2. Обработка AJAX обновления корзины

Если на вашем сайте используется AJAX для обновления корзины, понадобится дополнительный хук для обработки удаления товара при количестве 0:

add_action('wp_ajax_update_cart', 'wc_handle_zero_qty_ajax');
add_action('wp_ajax_nopriv_update_cart', 'wc_handle_zero_qty_ajax');

function wc_handle_zero_qty_ajax() {
    if ( ! empty( $_POST['cart'] ) && is_array( $_POST['cart'] ) ) {
        foreach ( $_POST['cart'] as $cart_item_key => $values ) {
            $qty = intval( $values['qty'] );
            if ( $qty === 0 ) {
                WC()->cart->remove_cart_item( $cart_item_key );
            }
        }
        WC()->cart->calculate_totals();
    }
    wp_send_json_success();
}

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

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

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

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

  • Код не работает на AJAX-обновлении: убедитесь, что ваш шаблон использует стандартный механизм обновления корзины WooCommerce. Если AJAX кастомный, добавьте обработку в соответствующие AJAX-хуки.
  • PHP-ошибки после вставки кода: проверьте правильно ли вы скопировали код, особенно символы стрелок (->) и кавычки.
  • Товар не удаляется, если количество не равно 0: код специально реагирует только на 0, для других значений оставляет товар.
  • Удаление не происходит на странице оформления заказа: данный код работает только на странице корзины, для оформления заказа потребуется отдельная логика.

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

  • Не изменяйте ядро WooCommerce: используйте хуки и фильтры, как показано.
  • Тестируйте изменения на тестовом сайте, чтобы исключить конфликты с другими плагинами.
  • Используйте кеширование с осторожностью, чтобы не кэшировались страницы корзины с неправильным содержимым.

Альтернативные варианты: плагин или код?

ВариантПлюсыМинусы
Код в functions.phpБыстрая настройка, нет дополнительных плагинов, гибкостьТребуется знание PHP, возможны ошибки без тестирования
Плагин для кастомизации корзиныПростота использования, поддержка разработчикаМожет замедлить сайт, не всегда бесплатно, возможно переизбыточно

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

⭐⭐⭐⭐⭐
Как запретить регистрацию пользователей в WordPress без плагинов
26.02.2026
WooCommerce: отладка и решение проблем при обновлении товаров в корзине
08.05.2026
Как автоматизировать создание резервных копий WordPress: лучшие плагины и примеры кода
03.12.2025
Как настроить автоматический импорт постов в WordPress из RSS-лент
29.12.2025
Как установить и настроить ABC Pagination для удобной навигации в WordPress
02.04.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее