WooCommerce: как установить ограничение на количество товаров в корзине

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

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

Как понять, что нужно ограничение

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

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

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

1. Добавление функции проверки количества товаров

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

add_filter('woocommerce_add_to_cart_validation', 'limit_cart_quantity', 10, 3);
function limit_cart_quantity($passed, $product_id, $quantity) {
    $max_items = 5; // Максимальное количество товара в корзине
    $cart = WC()->cart->get_cart();
    $current_quantity = 0;
    foreach ($cart as $cart_item_key => $values) {
        if ($values['product_id'] == $product_id) {
            $current_quantity = $values['quantity'];
            break;
        }
    }

    if (($current_quantity + $quantity) > $max_items) {
        wc_add_notice(sprintf('Вы не можете добавить более %d единиц этого товара в корзину.', $max_items), 'error');
        return false;
    }
    return $passed;
}

2. Настройка ограничения на общее количество товаров в корзине

Если нужно ограничить не количество одного товара, а общее количество всех товаров в корзине, используйте такой код:

add_action('woocommerce_check_cart_items', 'limit_total_cart_items');
function limit_total_cart_items() {
    $max_total_items = 10; // Максимальное общее количество товаров
    $total_quantity = WC()->cart->get_cart_contents_count();

    if ($total_quantity > $max_total_items) {
        wc_add_notice(sprintf('Вы не можете иметь более %d товаров в корзине одновременно.', $max_total_items), 'error');
        // Очистить корзину или заблокировать оформление
        // WC()->cart->empty_cart(); // раскомментируйте, если хотите очистить корзину
    }
}

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

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

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

  • Ошибка: Ограничение не работает, товары добавляются без ограничений.
    Проверьте, что код добавлен в активную тему или плагин, и кеш сайта очищен.
  • Ошибка: Сообщения об ошибках не отображаются.
    Убедитесь, что в теме выводятся уведомления WooCommerce с помощью do_action('woocommerce_before_cart') или аналогичных хуков.
  • Ошибка: Ограничение срабатывает некорректно при обновлении количества в корзине.
    Добавьте дополнительную проверку на обновление корзины, используя хук woocommerce_update_cart_validation.

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

  • Всегда тестируйте изменения на тестовом сайте, чтобы избежать сбоев на живом сайте.
  • Не используйте слишком жесткие ограничения без предупреждения пользователя — добавьте понятные сообщения.
  • Если у вас большой магазин, учитывайте нагрузку на сервер при проверках корзины.
  • Для сложных ограничений рассмотрите использование специализированных плагинов с дополнительными настройками.

Сравнение вариантов реализации ограничения корзины

МетодПреимуществаНедостатки
Код в functions.phpБыстрая настройка, без сторонних плагиновТребует навыков, сложно масштабировать
Использование плагина (например, WooCommerce Max Quantity)Готовое решение с настройками в админкеДополнительная нагрузка, возможные конфликты
Комбинация кода и плагинаГибкость и контрольСложнее поддерживать
WooCommerce: как отменить покупку после оплаты через код
29.05.2026
Как автоматизировать очистку базы данных WordPress
11.03.2026
Как использовать кастомные таблицы в WordPress для эффективного хранения данных
14.03.2026
Как удалить корзину WooCommerce из меню без плагинов
25.04.2026
WooCommerce: как отменить заказ после оплаты через код
01.06.2026