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

Сценарий типичный: товар в админке есть, атрибуты заполнены, но на странице товара покупатель видит только часть вариантов или вообще пустой селектор. Чаще всего это всплывает после импорта CSV, массового редактирования или переноса каталога между сайтами. Проблема не всегда в теме или кэше — нередко WooCommerce просто не может собрать корректные вариации из данных товара.

Ниже — практический разбор: как отличить битый импорт от конфликта плагинов, что проверить в карточке товара и как восстановить отображение вариаций без лишних действий.

Как выглядит проблема и где искать источник

Если вариации не показываются, сначала проверьте, что именно сломалось: данные в админке, AJAX-логика на фронтенде или кэш страницы. Это важно, потому что одинаковый симптом может иметь разные причины.

  • Вариации есть в Товары → Данные товара → Вариации, но на фронтенде селектор пустой.
  • Показывается только одна вариация, хотя в админке их несколько.
  • После выбора атрибута кнопка «В корзину» не активируется.
  • На части товаров всё работает, а на части — нет.

Что обычно ломается после импорта

Чаще всего проблема в одном из трёх мест: у родительского товара не заданы атрибуты как используются для вариаций, у вариаций не заполнены значения атрибутов, либо WooCommerce не пересобрал служебные метаданные после импорта. Если импорт делался через CSV, ещё стоит проверить, не поменялись ли названия атрибутов и их slug.

Диагностика: быстрый чек перед исправлением

Перед правками не пытайтесь «наугад» пересохранять всё подряд. Сначала проверьте конкретные точки, где WooCommerce берёт данные для вариаций.

  1. Откройте проблемный товар в админке.
  2. Проверьте тип товара: должен быть Вариативный товар.
  3. Вкладка Атрибуты: у нужных атрибутов должна стоять галка Используется для вариаций.
  4. Вкладка Вариации: у каждой вариации должны быть заполнены значения атрибутов и цена.
  5. Проверьте, не отключён ли вывод скриптов темы или оптимизатором JS.
  6. Очистите кэш страницы, если используется плагин кэширования или CDN.

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

Пошаговое решение

1. Пересохраните атрибуты и вариации

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

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

  • заданы все значения атрибутов;
  • есть цена;
  • вариация не скрыта вручную;
  • остаток не уходит в ноль, если у вас включён учёт склада.

2. Проверьте slug атрибутов после импорта

При импорте CSV часто путают отображаемое имя атрибута и его slug. WooCommerce сравнивает вариации именно по slug. Если в родительском товаре атрибут называется Размер, а в вариации импортирован как size или наоборот, связка может не собраться.

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

3. Сбросьте кэш транзиентов WooCommerce

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

Если нужен более точечный вариант через код, можно пересохранить товар программно и принудительно обновить кэш. Ниже пример для одного товара по ID:

<?php
$product_id = 123;
$product = wc_get_product( $product_id );

if ( $product ) {
    $product->save();
    wc_delete_product_transients( $product_id );
}

Этот код лучше запускать временно, например через небольшой MU-плагин или в CLI-скрипте, а не держать в теме.

4. Проверьте, не ломает ли страницу оптимизация JS

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

Особенно часто мешают:

  • объединение JS в один файл с ошибкой в стороннем скрипте;
  • defer для всех скриптов без исключений;
  • старые версии jQuery, которые подменяет тема или плагин;
  • скрипты галереи товара, которые падают раньше WooCommerce.

Если нужно восстановить вариации массово

Когда проблема затронула не один товар, а десятки или сотни, ручная правка не подходит. В таком случае лучше пройтись по товарам и пересохранить их программно. Это не «магическая кнопка», но для битого импорта часто помогает привести служебные данные в порядок.

<?php
// Запускать только после бэкапа.
$products = get_posts([
    'post_type'      => 'product',
    'posts_per_page' => -1,
    'post_status'    => 'publish',
    'fields'         => 'ids',
]);

foreach ( $products as $product_id ) {
    $product = wc_get_product( $product_id );
    if ( ! $product ) {
        continue;
    }

    if ( $product->is_type( 'variable' ) ) {
        $product->save();
        wc_delete_product_transients( $product_id );
    }
}

Если каталог большой, не запускайте такой код через обычную страницу сайта. Лучше использовать WP-CLI или временный скрипт в закрытом доступе, чтобы не получить таймаут.

Сравнение подходов: что выбрать

ПодходКогда подходитМинус
Пересохранить товар вручнуюПроблема у нескольких карточекДолго на большом каталоге
Очистить транзиенты и кэшПосле импорта или обновленияНе лечит битые slug атрибутов
Массовое пересохранение кодомСломан большой пул товаровНужен бэкап и аккуратный запуск

Как проверить, что всё заработало

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

  • Откройте товар в режиме инкогнито.
  • Выберите каждый вариант атрибута и убедитесь, что меняется цена, фото и наличие.
  • Добавьте товар в корзину из каждой вариации.
  • Проверьте, что в корзине и на checkout отображается правильный вариант.
  • Если есть кэш, проверьте страницу после очистки и без авторизации.

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

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

Атрибут не отмечен как используемый для вариаций

Это самая банальная причина. Атрибут есть, но WooCommerce не воспринимает его как основу для вариативного товара. Решение — открыть товар, вкладку Атрибуты, включить нужную галку и сохранить.

У вариации нет цены

Если цена пустая, WooCommerce может скрыть вариацию или не дать её выбрать. После импорта это встречается часто, особенно если цена была в отдельном столбце и не попала в нужное поле.

Сломан slug после переименования атрибута

Переименовали атрибут в админке, а вариации остались со старым значением. Визуально всё выглядит похоже, но связка уже не совпадает. В таких случаях нужно привести к одному slug и пересохранить товар.

Кэш показывает старую версию страницы

Если товар уже исправлен, но на фронтенде всё по-прежнему пусто, проблема может быть не в WooCommerce, а в кэше страницы, CDN или оптимизаторе HTML/JS. Очистите кэш на всех уровнях и проверьте страницу без авторизации.

Практика безопасности и поддержки

Если вы исправляете каталог кодом, делайте это только после бэкапа базы. Для массовых правок лучше использовать staging-копию сайта. Это особенно важно, если на магазине уже идут заказы: ошибка в скрипте пересохранения может затронуть остатки, цены или видимость товаров.

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

Если нужен инструмент для чистки лишнего мусора, дублей и служебных хвостов после миграций, имеет смысл смотреть не на «ускорители всего», а на утилиты, которые умеют аккуратно работать с WordPress-структурой. Например, у Clearfy Pro есть функции для технической чистки сайта: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала проверяйте, не в данных ли проблема, а не в оптимизации.

Если после всех шагов вариации всё ещё не отображаются, смотрите в сторону конкретного импорта: CSV-колонки, сопоставление атрибутов и логи ошибок WooCommerce. В большинстве случаев источник находится именно там, а не в самой теме или в «поломке» WooCommerce как такового.

WooCommerce не показывает вариации после импорта: как найти причину и восстановить выбор товара
10.09.2026
WooCommerce не принимает оплату после перехода на HTTPS: как найти и исправить проблему
07.09.2026