Как исключить варианты товаров WooCommerce по атрибуту

Проблема: необходимость скрыть варианты товаров по определённому атрибуту

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

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

Чтобы понять, работает ли исключение правильно, нужно:

  • Проверить, что у товара есть вариативный тип и атрибуты, назначенные как вариации.
  • Убедиться, что варианты с нужным атрибутом реально присутствуют в базе.
  • Проверить, что на фронтенде (странице товара) эти варианты отображаются или скрываются.

Без вмешательства WooCommerce выводит все варианты, даже если они не в наличии. Отключение «В наличии» не исключает вариант из списка выбора без дополнительного кода.

Пошаговое решение: исключаем варианты по атрибуту с помощью фильтра

Для исключения вариаций по определённому значению атрибута используем фильтр woocommerce_variation_is_active. Он позволяет отключать варианты динамически, не удаляя их из базы.

Пример: отключаем все варианты с цветом «Красный»

add_filter('woocommerce_variation_is_active', 'exclude_variations_by_attribute', 10, 2); function exclude_variations_by_attribute($is_active, $variation) {    // ID атрибута цвета (узнать в админке или базе)    $attribute_name = 'pa_color'; // пример slug атрибута    $exclude_value = 'krasnyj'; // slug исключаемого значения атрибута    // Получаем значение атрибута вариации    $variation_attributes = $variation->get_attributes();    if (!empty($variation_attributes[$attribute_name]) && $variation_attributes[$attribute_name] === $exclude_value) {        return false; // отключаем вариант    }    return $is_active;}

Обратите внимание:

  • pa_color — системный slug атрибута «Цвет» в WooCommerce.
  • krasnyj — slug значения атрибута, которое нужно исключить (не «Красный», а именно slug). Узнать slug можно в разделе «Атрибуты» панели администрирования WooCommerce.

Добавление кода в тему или плагин

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

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

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

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

  • Неправильный slug атрибута или значения: проверить в WooCommerce > Продукты > Атрибуты; использовать именно slug, а не название.
  • Кэширование: если используется кэш-плагин, нужно сбросить кэш после внесения изменений.
  • Код добавлен в неподходящее место: убедитесь, что код в functions.php дочерней темы или в отдельном плагине.
  • Конфликты с другими плагинами: временно отключите другие плагины, если фильтр не срабатывает.

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

  • Фильтр woocommerce_variation_is_active срабатывает при каждой загрузке вариации, поэтому избегайте тяжёлых запросов внутри функции.
  • Если нужно исключать варианты по нескольким атрибутам, используйте массив исключений и проверяйте их через in_array().
  • Не удаляйте варианты напрямую из базы без резервной копии — лучше скрыть через фильтр.

Альтернативы: плагины vs код

СпособПлюсыМинусы
Код на functions.phpБыстро, бесплатно, гибко, не требует установки плагинаТребует навыков, возможны ошибки, нужно тестировать
Плагины для управления вариациями (например, WooCommerce Variation Swatches)Интуитивно, часто с UI, дополнительные функцииМогут замедлять сайт, требуют обновлений, могут конфликтовать
Автоматическое удаление неактивных клиентов в WooCommerce
07.06.2026
Создаем эффективный shortcode в WordPress с примерами кода
17.11.2025
Как удалить неиспользуемые поля из Meta Box в WordPress
27.01.2026
Как создать и использовать виджеты в WordPress без плагинов
09.02.2026
Исключение товаров WooCommerce по атрибуту из корзины и оформления заказа
28.05.2026