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

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

В некоторых интернет-магазинах требуется установить лимит на количество товаров, которые пользователь может добавить в корзину. Это может быть связано с ограничениями по логистике, складскому запасу или маркетинговыми акциями. Без такого ограничения покупатель может добавить слишком много товаров, что приведёт к ошибкам в обработке заказов или увеличит нагрузку на сервер.

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

1. Добавление проверки при добавлении товара в корзину

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

add_filter('woocommerce_add_to_cart_validation', 'limit_cart_item_quantity', 10, 3); function limit_cart_item_quantity($passed, $product_id, $quantity) {     $limit = 10; // Максимальное количество товаров в корзине     $cart = WC()->cart->get_cart();     $total_quantity = 0;      foreach ($cart as $cart_item) {         $total_quantity += $cart_item['quantity'];     }      if (($total_quantity + $quantity) > $limit) {         wc_add_notice('Вы не можете добавить больше ' . $limit . ' товаров в корзину.', 'error');         return false;     }      return $passed; }

2. Уведомление пользователя на странице корзины и оформления заказа

Чтобы не допустить ошибок, стоит также уведомить пользователя, если он каким-то образом обошёл ограничение, например, через прямое изменение количества в корзине.

add_action('woocommerce_check_cart_items', 'check_cart_item_quantity_limit'); function check_cart_item_quantity_limit() {     $limit = 10;     $cart = WC()->cart->get_cart();     $total_quantity = 0;      foreach ($cart as $cart_item) {         $total_quantity += $cart_item['quantity'];     }      if ($total_quantity > $limit) {         wc_add_notice('Общее количество товаров в корзине не может превышать ' . $limit . '.', 'error');     } }

3. Блокировка изменения количества в корзине сверх лимита

Для улучшения UX можно ограничить поле ввода количества товаров на стороне клиента с помощью JavaScript.

add_action('wp_footer', 'limit_cart_quantity_js'); function limit_cart_quantity_js() {     if (is_cart()) {         $limit = 10;         ?>         <script>             (function($){                 $(document).ready(function(){                     $('input.qty').on('change', function(){                         var total = 0;                         $('input.qty').each(function(){                             total += parseInt($(this).val());                         });                         if(total > <?php echo $limit; ?>){                             alert('Общее количество товаров в корзине не может превышать <?php echo $limit; ?>.');                             $(this).val(1);                             $('form.woocommerce-cart-form').submit();                         }                     });                 });             })(jQuery);         </script>         <?php     } }

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

  • Попробуйте добавить товаров в корзину более, чем установленный лимит (например, 11 при лимите 10). Добавление должно быть заблокировано с уведомлением.
  • Измените количество товаров в корзине через поле ввода на странице корзины. Если сумма превысит лимит, должна появиться ошибка и количество скорректируется.
  • Проверьте страницу оформления заказа: если количество превышает лимит, должна быть ошибка.

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

  • Лимит не срабатывает при добавлении вариаций или разных товаров: убедитесь, что в подсчёте учитываются все позиции корзины, а не только текущий товар.
  • Ошибки синтаксиса PHP: проверяйте код через php -l или в локальной среде перед внедрением.
  • Пользователь может обойти ограничение через REST API или сторонние плагины: при необходимости добавьте серверную проверку на уровне woocommerce_checkout_process.

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

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

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

Метод Преимущества Недостатки
Хук woocommerce_add_to_cart_validation Простота, работает при добавлении товара Не блокирует изменение количества в корзине
Проверка при woocommerce_check_cart_items Контроль при оформлении заказа Не предотвращает добавление, только уведомляет
JS-ограничение поля количества Улучшает UX, быстро реагирует Легко обойти, нужна серверная проверка
Плагин с настройками Готовое решение с интерфейсом Дополнительная нагрузка, может конфликтовать
WooCommerce: автоматическое удаление закрытых заказов
04.07.2026
WooCommerce: артикул (SKU) не сохраняется при редактировании товара — как исправить
04.05.2026
Как отключить XML-RPC в WordPress для повышения безопасности
05.03.2026
Как создать собственный плагин для мониторинга здоровья WordPress
08.04.2026
Как создать собственный шорткод WordPress: практическое руководство с примерами
17.11.2025