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

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

В интернет-магазинах часто возникает необходимость ограничить количество товаров, которые клиент может добавить в корзину. Это может быть важно для контроля складских запасов, предотвращения массовых закупок, или для внедрения специальных правил продаж (например, не более 5 единиц одного товара или не более 10 товаров всего в корзине).

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

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

Ограничение количества одного товара (максимум 5 штук на товар)

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

add_filter('woocommerce_add_to_cart_validation', 'limit_quantity_per_product', 10, 3);
function limit_quantity_per_product($passed, $product_id, $quantity) {
    $max_quantity = 5; // максимальное количество одного товара
    $current_quantity = 0;

    // Проверяем, есть ли этот товар уже в корзине и сколько его
    foreach (WC()->cart->get_cart() as $cart_item) {
        if ($cart_item['product_id'] == $product_id) {
            $current_quantity = $cart_item['quantity'];
            break;
        }
    }

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

Ограничение общего количества товаров в корзине (не более 10)

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

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

    if ($total_quantity > $max_total_quantity) {
        wc_add_notice(sprintf('Общее количество товаров в корзине не может превышать %d.', $max_total_quantity), 'error');
    }
}

Пошаговое руководство по внедрению ограничений в WooCommerce

  1. Откройте файл functions.php вашей дочерней темы или создайте плагин для пользовательских функций.
  2. Скопируйте и вставьте приведённые выше функции в файл.
  3. При необходимости измените значения $max_quantity и $max_total_quantity под ваши бизнес-требования.
  4. Сохраните изменения.
  5. Очистите кэш сайта и браузера.
  6. Протестируйте добавление товаров в корзину, убедитесь, что ограничения срабатывают и ошибки выводятся корректно.

Как проверить, что ограничения работают

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

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

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

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

  • Вставляйте код в дочернюю тему или отдельный плагин, чтобы не потерять при обновлении.
  • Избегайте дублирования проверок, чтобы не перегружать сервер лишними вычислениями.
  • Убедитесь, что уведомления об ошибках не раскрывают внутренние данные сайта.
  • Тестируйте изменения на staging-сервере перед внедрением в рабочий магазин.

Таблица сравнения способов ограничения количества товаров

МетодПреимуществаНедостаткиПример использования
Код в functions.phpГибкость, отсутствие зависимостейТребует навыков, возможна ошибка в кодеОграничение по количеству товара и общей корзине
Плагин (например, WooCommerce Min/Max Quantities)Простота настройки, поддержкаДополнительная нагрузка, может конфликтоватьУстановка и настройка через админку
Комбинированный подходМаксимальная гибкость и удобствоСложность поддержкиКод для особых правил + плагин для базовых
Автоматическое удаление неактивных клиентов в WooCommerce по сроку бездействия
26.04.2026
WooCommerce: как установить ограничения на количество товаров в корзине
30.04.2026
Как автоматизировать удаление отзывов в WordPress по условиям
12.03.2026
Удаление проблемных постов в WordPress по заданным условиям
17.12.2025
Как автоматизировать удаление старого медиа в WordPress
14.04.2026