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

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

В интернет-магазинах на базе WooCommerce часто возникает необходимость ограничить минимальное или максимальное количество товаров, которые можно добавить в корзину. Это может быть нужно для управления складскими запасами, предотвращения оптовых закупок от обычных покупателей или соблюдения условий доставки. По умолчанию WooCommerce не позволяет гибко настраивать такие ограничения, особенно на уровне всего заказа.

Проверить, что ограничение нужно именно на уровне заказа, а не отдельного товара, можно так:

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

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

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

Пример кода, который нужно добавить в файл functions.php вашей темы или в отдельный плагин:

add_action('woocommerce_check_cart_items', 'limit_cart_item_quantities');
function limit_cart_item_quantities() {
    $min_items = 3; // минимальное количество товаров в заказе
    $max_items = 10; // максимальное количество товаров в заказе

    $total_quantity = 0;
    foreach (WC()->cart->get_cart() as $cart_item) {
        $total_quantity += $cart_item['quantity'];
    }

    if ($total_quantity < $min_items) {
        wc_add_notice(sprintf('Минимальное количество товаров в заказе — %d. Пожалуйста, добавьте еще товаров.', $min_items), 'error');
    }

    if ($total_quantity > $max_items) {
        wc_add_notice(sprintf('Максимальное количество товаров в заказе — %d. Пожалуйста, уменьшите количество товаров.', $max_items), 'error');
    }
}

Как подключить и протестировать код

  1. Откройте functions.php в активной теме (желательно дочерней).
  2. Вставьте код выше в конец файла.
  3. Сохраните изменения и перезагрузите сайт.
  4. Добавьте в корзину меньше 3 товаров — при переходе к оплате появится сообщение об ошибке.
  5. Добавьте в корзину больше 10 товаров — тоже появится предупреждение.
  6. Добавьте 3–10 товаров — оформление заказа должно пройти без ошибок.

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

Чтобы убедиться, что лимиты работают корректно:

  • Очистите корзину.
  • Добавьте один товар с количеством 1 — при попытке оформить заказ увидите ошибку о минимальном количестве.
  • Добавьте несколько товаров суммарно до 10 — ошибок не должно быть.
  • Добавьте товары, превышающие 10 по сумме — появится ошибка о максимальном количестве.

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

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

  • Ошибка: сообщения об ошибках не отображаются. Проверьте, включены ли уведомления WooCommerce и не блокирует ли тема вывод wc_print_notices().
  • Код не работает при AJAX-обновлении корзины. В этом случае нужно добавить обработчик для AJAX, например, на событие updated_wc_div с повторной проверкой.
  • Конфликт с другими плагинами, которые модифицируют корзину. Попробуйте временно отключить такие плагины и проверить работу кода.
  • Некорректный подсчет количества товаров. Убедитесь, что в корзине реально считаются все позиции, включая вариации и индивидуальные продукты.

Практические советы по оптимизации и безопасности

  • Храните значения лимитов в константах или опциях темы, чтобы можно было быстро менять без редактирования кода.
  • Не используйте слишком жесткие ограничения, чтобы не ухудшать UX.
  • Обязательно тестируйте на разных устройствах и с разными методами оплаты.
  • Если используете AJAX-корзину, добавьте обработку ошибок и перерисовку сообщений в JS.

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

СпособПлюсыМинусыКомпромисс
Код в functions.phpПолный контроль, нет нагрузки от плагиновТребует навыков, может сломаться при обновленияхХранить в дочерней теме
Плагин для ограничения корзиныПростой интерфейс, быстро настроитьМожет конфликтовать, нагрузка на сайтИспользовать проверенные плагины
Как отключить системные email-уведомления WordPress без плагинов
07.04.2026
Как удалить неиспользуемые метаполя в WordPress: практическое руководство
12.02.2026
Как удалить неиспользуемые таксономии в WordPress без плагинов
06.01.2026
Автоматическое изменение веса продукта в WooCommerce при обновлении атрибутов
21.05.2026
Реактивный фильтрованный вывод постов в WordPress с AJAX
20.03.2026