Вы добавляете размеры или цвета к товару WooCommerce, сохраняете его и открываете страницу. Выпадающих списков нет. Или списки отображаются, но один из вариантов недоступен. Либо вы видите сообщение «Извините, нет товаров, соответствующих вашему выбору».

После устранения этой проблемы в бесчисленных магазинах я всегда выполняю одну и ту же последовательность проверок. Начинаю с настроек, затем перехожу к шаблонам и конфликтам, а после — к JavaScript и коду. Попытки сразу же отключить все плагины только пускают время на ветер.

Сначала сделайте резервную копию базы данных и файлов, а по возможности протестируйте всё на стейджинге.

Быстрая диагностика

Что вы видите Вероятная причина
Нет выпадающих списков, только обычная кнопка добавления в корзину Товар не настроен как вариативный
Отсутствует выпадающий список для одного из атрибутов Атрибут не отмечен галочкой «Использовать для вариаций»
У опции нет цены или её невозможно выбрать У вариации не указана цена, она отключена или распродана
«Нет товаров, соответствующих вашему выбору» Пропущена комбинация или превышен лимит вариаций
Макет сломался после обновления Устаревший шаблон темы
Работает для авторизованных, не работает для гостей Кэширование или минификация

Шаги с 1 по 4: настройка

 1. Тип товара. В блоке «Данные товара» в выпадающем списке должно быть выбрано значение «Вариативный товар», а сам товар должен быть опубликован и виден в каталоге.

 2. Атрибуты. На вкладке «Атрибуты» установите галочку «Использовать для вариаций» для каждого атрибута, который вы хотите видеть в виде выпадающего списка, затем нажмите «Сохранить атрибуты». Для глобальных атрибутов убедитесь, что нужные вам значения привязаны к этому товару.

 3. Каждая вариация. Откройте вкладку «Вариации» и убедитесь, что каждая вариация включена, имеет стандартную цену и валидный статус наличия. WooCommerce считает вариацию без цены недоступной для покупки, поэтому она исчезает. Если вы переименовывали значения атрибутов после создания вариаций, удалите их и сгенерируйте заново.

 4. Настройки запасов. В разделе WooCommerce > Настройки > Товары > Запасы проверьте опцию, которая скрывает распроданные товары. Если распродана каждая вариация, весь товар может пропасть из магазина.

Шаг 5: «Нет товаров, соответствующих вашему выбору»

Две распространенные причины. Во-первых, пропущенная комбинация: покупатель выбрал «Большой» и «Синий», но вы создали только «Большой» и «Красный». Во-вторых, лимит вариаций. По умолчанию WooCommerce загружает данные вариаций на страницу для товаров с числом вариаций до 30, а при превышении этого значения переключается на AJAX, с чем некоторые темы и настройки кэширования справляются плохо. Вы можете увеличить этот порог:

 add_filter( 'woocommerce_ajax_variation_threshold', function( $qty, $product ) {
    return 100;
}, 10, 2 );
 

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

Шаги 6 и 7: шаблоны и конфликты

 6. Переопределение шаблонов. Перейдите в WooCommerce > Статус и проверьте раздел «Шаблоны» на наличие устаревших переопределений. Проверьте работу с темой по умолчанию, например Storefront, на стейджинге. Если вариации появятся там, проблема кроется в шаблонах вашей темы или дочерней темы.

 7. Конфликты плагинов и конструкторов. Частыми виновниками являются плагины вариативных селекторов (swatches), плагины таблиц товаров, плагины кэширования и всё, что затрагивает область добавления в корзину. Если вы создали собственный шаблон одиночного товара в конструкторе страниц, он должен содержать элемент «Добавить в корзину», поскольку именно этот элемент выводит выпадающие списки. Отключите всё, кроме WooCommerce, проверьте работу, а затем включайте плагины по одному.

Шаг 8: JavaScript, кэширование и минификация

Выпадающие списки зависят от JavaScript. Откройте консоль браузера и перезагрузите страницу. Красные ошибки, упоминающие jQuery, указывают на поврежденный или заблокированный скрипт. Затем очистите все уровни кэша (плагин, хостинг, CDN), временно отключите минификацию, объединение и отложенную загрузку скриптов, после чего протестируйте в режиме инкогнито. Если это помогло, включите оптимизацию обратно, добавив исключения для скриптов jQuery и WooCommerce, вместо того чтобы отключать её полностью.

Шаг 9: транзиенты и таблицы поиска

В разделе WooCommerce > Статус > Инструменты запустите инструмент очистки транзиентов WooCommerce, а затем запустите инструменты пересоздания таблиц поиска товаров. Это исправит неверные диапазоны цен и товары, пропавшие из фильтров. На больших каталогах запускайте эти операции в часы наименьшей посещаемости.

Шаг 10: чтение логов

Добавьте следующие строки в  wp-config.php :

 define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
 

Перезагрузите страницу товара и проверьте  wp-content/debug.log  на наличие фатальных ошибок или предупреждений, в которых упоминаются WooCommerce, ваша тема или какой-либо плагин. После завершения отладки отключите её.

Профилактика

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

Часто задаваемые вопросы

 Почему вариация без цены исчезает?
WooCommerce считает её недоступной для покупки и скрывает либо выводит сообщение о недоступности. Добавьте стандартную цену.

 Сколько вариаций может быть у товара?
Жесткого лимита нет, но стандартная обработка на странице останавливается на отметке 30, после чего начинает использоваться AJAX. Очень большое количество вариаций может замедлить загрузку страницы.

 Может ли кэширование сломать выпадающие списки вариаций?
Да. Объединенный, минифицированный или отложенный JavaScript может помешать выполнении скрипта, а закэшированные страницы могут отдавать устаревшие данные.

 Когда стоит привлечь разработчика?
Когда вы прошли каждый шаг, когда проблема началась после обновления темы, когда вам нужны сложные опции вроде комплектов (bundles) или условных полей, либо когда каждый день простоя ведет к потере продаж.

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