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

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

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

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

1. Ограничение количества одного товара

Для ограничения количества одного товара можно использовать фильтр woocommerce_add_to_cart_validation. Пример кода, который ограничит максимальное количество одного товара в корзине до 5 единиц:

add_filter('woocommerce_add_to_cart_validation', 'limit_product_quantity_in_cart', 10, 3);
function limit_product_quantity_in_cart($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'];
        }
    }

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

    return $passed;
}

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

Если требуется ограничить общее количество товаров в корзине (независимо от артикулов), можно использовать следующий код:

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

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

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

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

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

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

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

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

Сравнение вариантов решения

МетодОписаниеПлюсыМинусы
Код в functions.phpРеализация через хуки WooCommerceПолный контроль, нет доп. плагиновТребует навыков, возможны ошибки при обновлении темы
Плагин ограничения корзиныИспользование готового плагина (например, WooCommerce Max Quantity)Удобство настройки, поддержкаЗависимость от плагина, возможные конфликты, нагрузка
Комбинация кода и плагинаБазовое ограничение плагином, доп. логика через кодГибкость и простотаСложность поддержки
Как сделать автоматический импорт заданий из Яндекс Толока в WordPress
04.02.2026
Автоматическое удаление спам комментариев в WordPress
27.01.2026
Как создать автоматическую резервную копию WordPress с помощью плагинов и собственного кода
20.11.2025
Как удалить неактивные мета данные в WordPress для оптимизации базы
15.03.2026
Как изменить HTML-разметку в WordPress без ущерба для SEO
27.12.2025