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

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

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

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

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

Для ограничения общего количества товаров в корзине используем хук woocommerce_check_cart_items. В этом примере ограничим корзину максимум 5 товарами:

add_action('woocommerce_check_cart_items', 'limit_cart_items_quantity');
function limit_cart_items_quantity() {
    $max_items = 5; // Максимальное количество товаров
    $cart_quantity = WC()->cart->get_cart_contents_count();

    if ($cart_quantity > $max_items) {
        wc_add_notice(sprintf('Вы можете добавить в корзину не более %d товаров.', $max_items), 'error');
    }
}

Ограничение количества конкретного товара по ID

Если нужно ограничить количество определенного товара, например с ID 123, до 2 штук, используем фильтр woocommerce_add_to_cart_validation:

add_filter('woocommerce_add_to_cart_validation', 'limit_specific_product_quantity', 10, 3);
function limit_specific_product_quantity($passed, $product_id, $quantity) {
    $limit = 2; // Максимум для товара с ID 123
    $target_id = 123;

    if ($product_id === $target_id) {
        $cart = WC()->cart->get_cart();
        $current_qty = 0;

        foreach ($cart as $cart_item) {
            if ($cart_item['product_id'] === $target_id) {
                $current_qty += $cart_item['quantity'];
            }
        }

        if (($current_qty + $quantity) > $limit) {
            wc_add_notice(sprintf('Максимум %d штук товара %s разрешено в корзине.', $limit, get_the_title($product_id)), 'error');
            return false;
        }
    }

    return $passed;
}

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

  • Добавьте в корзину товары через фронтенд.
  • Попробуйте добавить больше товаров, чем разрешено (например, 6 или 3 товара с ID 123).
  • В случае превышения ограничений должно появиться сообщение об ошибке, и товар не добавится.
  • В админке WooCommerce проверьте содержимое корзины — количество товаров не должно превышать заданных лимитов.

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

  • Ошибка: сообщения об ошибке не показываются
    Проверьте, что у темы или плагинов не отключена функция вывода уведомлений WooCommerce (wc_print_notices()).
  • Ошибка: ограничения не срабатывают при обновлении количества в корзине
    Добавьте аналогичную проверку для хука woocommerce_update_cart_validation, чтобы ограничивать изменение количества товаров:
add_filter('woocommerce_update_cart_validation', 'limit_specific_product_quantity_update', 10, 4);
function limit_specific_product_quantity_update($passed, $cart_item_key, $values, $quantity) {
    $limit = 2;
    $target_id = 123;

    if ($values['product_id'] === $target_id && $quantity > $limit) {
        wc_add_notice(sprintf('Максимум %d штук товара %s разрешено в корзине.', $limit, get_the_title($target_id)), 'error');
        return false;
    }

    return $passed;
}
  • Ошибка: конфликт с плагинами кэширования или оптимизации
    Очистите кэш и проверьте, что корзина не кешируется на стороне сервера или CDN.

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

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

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

СпособПреимуществаНедостатки
Кастомный код (фильтры и хуки)Бесплатно, гибко, быстро внедряетсяТребует навыков разработки, возможно конфликты с другими плагинами
Плагины ограничения корзины (например, WooCommerce Max Quantity)Удобный интерфейс, расширенный функционалПлатные решения, нагрузка на сайт
Собственные изменения в шаблонахПолный контроль над UXТребует поддержки при обновлениях WooCommerce
WooCommerce: Автоматическое отключение платежей при неуспешной оплате
07.05.2026
Оптимизация базы данных WordPress: как ускорить сайт и снизить нагрузку
15.11.2025
Создать и использовать собственные типы записей в WordPress
30.12.2025
Как использовать WPCommunity для создания внутреннего форума на WordPress
23.01.2026
Как настроить использование временных таблиц в WordPress для ускорения запросов
05.03.2026