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

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

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

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

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

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

add_filter('woocommerce_add_to_cart_validation', 'limit_single_product_quantity', 10, 3);
function limit_single_product_quantity($passed, $product_id, $quantity) {
    $max_quantity = 5; // Максимум 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_quantity');
function limit_total_cart_quantity() {
    $max_total_quantity = 10; // Максимум 10 товаров в корзине
    $total_quantity = WC()->cart->get_cart_contents_count();

    if ($total_quantity > $max_total_quantity) {
        wc_add_notice(sprintf('Вы не можете добавить в корзину больше %d товаров.', $max_total_quantity), 'error');
        // Очищаем корзину или можно реализовать другое поведение
        // WC()->cart->empty_cart();
    }
}

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

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

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

  • Ошибка: Ограничение не срабатывает при добавлении товара с вариациями.
    Причина: В коде проверяется только product_id, а вариации имеют свои ID.
    Решение: Используйте $cart_item['variation_id'] если работаете с вариативными товарами.
  • Ошибка: Пользователь может обойти ограничение, добавляя товар в несколько заходов.
    Причина: Не учитывается уже добавленное количество в корзине.
    Решение: В первом примере указана суммарная проверка с учётом текущего количества в корзине.
  • Ошибка: Сообщение об ошибке не выводится.
    Причина: Отсутствует вызов wc_add_notice() или тема не поддерживает вывод уведомлений.
    Решение: Проверьте тему и корректность подключения функций WooCommerce.

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

  • Не используйте тяжелые запросы в хуках, связанных с корзиной, чтобы не замедлять работу сайта.
  • Проверяйте работу ограничений в разных браузерах и сессиях, чтобы избежать рассинхронизации данных.
  • При больших нагрузках на сервер кэширование корзины следует настраивать с осторожностью, чтобы не возникало ошибок с подсчетом количества товаров.
  • Для более сложной логики ограничений рассматривайте использование плагинов, например, Clearfy Pro, который имеет расширенные инструменты оптимизации WooCommerce.

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

МетодПлюсыМинусыПодходит для
Код в functions.phpБыстро, без дополнительных плагиновТребует навыков, ограничен по функционалуНебольшие магазины, простые ограничения
Плагины (например, WooCommerce Max Quantity)Богатый функционал, настройки через интерфейсНагрузка на сайт, возможны конфликтыБольшие магазины, сложные правила
Комбинация кода и плагиновГибкость и расширяемостьТребует тестирования совместимостиМагазины с уникальными требованиями

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как настроить отложенный запуск функций в WordPress с помощью Cron
21.02.2026
WooCommerce: как запретить изменение количества товаров в корзине
16.05.2026
Как настроить отзывы в WordPress с использованием плагинов и кода
01.01.2026
Как автоматизировать удаление старых чрезмерных изображений в WordPress
07.03.2026
Как запретить обработку разных типов файлов в WordPress: практическое руководство
22.03.2026
×
Делай сайт лучше!!

-20% на премиум темы и плагины

Использовать скидку ⋙