Как исправить неработающий параметр Sold Individually в WooCommerce

Диагностика проблемы с Sold Individually в WooCommerce

Опция Sold Individually в WooCommerce ограничивает возможность покупки одного товара в одном заказе. Однако часто владельцы интернет-магазинов сталкиваются с тем, что несмотря на включение этого параметра, клиенты могут добавлять несколько единиц товара в корзину.

Основные признаки проблемы:

  • В админке товара включена галочка «Продажа в одном экземпляре»;
  • В корзине и на странице товара можно добавить в заказ несколько штук этого продукта;
  • Отсутствуют ошибки в логах, но поведение не соответствует настройкам.

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

Причины, почему параметр Sold Individually не работает

1. Конфликт с кастомными функциями в functions.php или плагинах

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

2. Использование плагинов, изменяющих логику корзины

Плагины для управления корзиной, комплектации, доставки могут отключать или переопределять поведение параметра sold_individually.

3. Кэширование

Кэширование страниц или данных корзины может препятствовать обновлению статуса ограничения.

Пошаговое решение проблемы с Sold Individually

Шаг 1. Проверка параметра в настройках товара

В админке WooCommerce перейдите в редактирование товара, вкладка «Основные» → отметьте «Продажа в одном экземпляре».

Шаг 2. Отключите сторонние плагины, влияющие на корзину

Для диагностики временно отключите плагины, которые управляют корзиной, скидками, комплектацией товаров.

Шаг 3. Проверка кастомного кода

Ищите в functions.php или подключенных плагинах фильтры на woocommerce_add_to_cart_validation или функции, меняющие поведение корзины.

Для принудительной блокировки добавления второго товара с параметром sold_individually можно добавить следующий код:

add_filter('woocommerce_add_to_cart_validation', function($passed, $product_id, $quantity) {
    $product = wc_get_product($product_id);
    if ($product && $product->is_sold_individually()) {
        foreach (WC()->cart->get_cart() as $cart_item) {
            if ($cart_item['product_id'] === $product_id) {
                $passed = false;
                wc_add_notice(__('Этот товар можно купить только в одном экземпляре.'), 'error');
                break;
            }
        }
    }
    return $passed;
}, 10, 3);

Шаг 4. Очистите кэш и проверьте работу

Очистите кэш плагина (если используется), браузера, а также серверный кэш (например, Redis, Varnish).

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

1. Перейдите на страницу товара и попробуйте добавить товар в корзину несколько раз. Второе добавление должно блокироваться с сообщением об ошибке.

2. Перейдите в корзину и убедитесь, что количество товара ограничено единицей.

3. Проверьте, что нет ошибок PHP и JS в консоли браузера и логах сервера.

Частые ошибки при работе с Sold Individually

  • Отсутствие вызова is_sold_individually() в кастомных фильтрах приводит к игнорированию ограничения.
  • Кэширование страниц корзины или товара без исключения для динамических элементов мешает обновлению.
  • Применение плагинов, которые заменяют стандартную корзину WooCommerce (например, кастомные конструкторы корзины), где Sold Individually не реализован.

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

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

Сравнение вариантов реализации ограничения продажи в одном экземпляре

МетодПлюсыМинусы
Стандартный параметр WooCommerceВстроено, не требует кодаИногда не срабатывает из-за конфликтов
Кастомный фильтр на add_to_cart_validationГарантированное блокирование, контроль вывода ошибокТребует навыков программирования
Плагины управления корзинойДополнительный функционалМогут конфликтовать, влиять на производительность
Решение ошибки Headers Already Sent в WordPress
17.01.2026
WooCommerce: как исправить проблему с автоматическим удалением товаров из корзины
01.06.2026
Решение ошибки Post Content Length в WordPress
13.01.2026
Как использовать WP Error Log для отладки WordPress
04.12.2025
Решение ошибки PHP Fatal error: Allowed memory size exhausted в WordPress
31.03.2026