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

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

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

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

  • Добавьте в корзину более 10 товаров одного товара или разных товаров.
  • Обратите внимание, что WooCommerce пропускает любые количества без предупреждения.
  • Если в админке нет настроек по лимитам, значит ограничения отсутствуют.

Пошаговое решение: ограничение количества товаров в корзине через functions.php

Добавим в файл functions.php вашей активной темы код, который ограничит общее количество товаров в корзине, например, максимум 10 штук:

add_action('woocommerce_check_cart_items', 'limit_cart_items_quantity');
function limit_cart_items_quantity() {
    $max_items = 10; // максимальное количество товаров в корзине
    $total_quantity = 0;
    foreach (WC()->cart->get_cart() as $cart_item) {
        $total_quantity += $cart_item['quantity'];
    }
    if ($total_quantity > $max_items) {
        wc_add_notice(sprintf('Вы не можете добавить в корзину более %d товаров.', $max_items), 'error');
        // Опционально: удалить последний добавленный товар
        // WC()->cart->remove_cart_item($cart_item_key);
    }
}

Этот код проверяет сумму всех товаров в корзине и добавляет ошибку, если лимит превышен. Покупатель увидит уведомление и не сможет оформить заказ с превышением лимита.

Как установить ограничение на количество одного товара

add_filter('woocommerce_add_cart_item_data', 'limit_single_product_quantity', 10, 2);
function limit_single_product_quantity($cart_item_data, $product_id) {
    $max_per_product = 5; // макс. количество одного товара
    $found_quantity = 0;
    foreach (WC()->cart->get_cart() as $cart_item) {
        if ($cart_item['product_id'] == $product_id) {
            $found_quantity += $cart_item['quantity'];
        }
    }
    if ($found_quantity + 1 > $max_per_product) {
        wc_add_notice(sprintf('Максимум %d единиц этого товара можно добавить в корзину.', $max_per_product), 'error');
        return false; // блокируем добавление
    }
    return $cart_item_data;
}

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

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

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

  • Ошибка: Лимит не срабатывает, пользователь может добавить больше товаров.
    Причина: Код добавлен не в functions.php активной темы или конфликт с другими плагинами.
    Решение: Проверьте правильность подключения, отключите плагины, которые могут влиять на корзину.
  • Ошибка: Ошибка появляется, но не блокирует добавление товара.
    Причина: В коде нет удаления или блокировки товара.
    Решение: Можно дополнительно вызвать WC()->cart->remove_cart_item() для удаления или вернуть false в фильтре добавления товара.
  • Ошибка: Сообщение об ошибке не отображается в шаблоне.
    Решение: Убедитесь, что тема корректно выводит уведомления WooCommerce с функцией wc_print_notices().

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

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

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

МетодПлюсыМинусы
Код в functions.phpБыстро и бесплатно, без сторонних плагинов, легко кастомизироватьТребует навыков PHP, может конфликтовать с темой или плагинами
Плагин ограничения корзиныГотовое решение с настройками в админке, поддержка разработчиковЗависимость от плагина, нагрузка на сайт, возможная плата
Модификация шаблоновГибкая визуальная настройка сообщенийНе блокирует логику корзины, требует PHP + шаблонизатор
Как создать динамическую регистрацию пользователей в WordPress с проверкой и защитой
23.03.2026
WooCommerce: как автоматически удалять старые заказы по расписанию без плагинов
16.06.2026
WooCommerce: автоматическое изменение стоимости товаров по расписанию
27.05.2026
Как создать собственный тип постов в WordPress с поддержкой REST API
14.04.2026
Как добавить произвольные поля в WordPress без плагинов
01.12.2025