WooCommerce не отображает товары после обновления: как исправить

Диагностика проблемы: почему товары исчезают после обновления WooCommerce

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

  • Конфликт версий WooCommerce и темы или плагинов;
  • Повреждение или отсутствие связи с таксономиями (категориями, тегами);
  • Ошибки в базе данных, связанные с обновлением;
  • Кэширование, выводящее устаревшие данные;
  • Неправильные параметры отображения в настройках WooCommerce или в коде темы.

Для начала проверьте консоль браузера на наличие JS-ошибок и логи сервера на ошибки PHP. Это поможет понять, есть ли сбои на уровне кода.

Проверка статуса товаров и видимости

В админке WooCommerce перейдите в Товары и убедитесь, что товары находятся в статусе Опубликовано и видимость установлена как Публичная. Иногда обновления сбрасывают эти параметры.

Пошаговое решение: восстановление отображения товаров

1. Отключение кэша и плагинов оптимизации

Первое, что нужно сделать — отключить все плагины кэширования (например, WP Super Cache, W3 Total Cache) и оптимизации (например, Autoptimize).

Очистите кэш браузера и серверный кэш. Это исключит вывод устаревшего контента.

2. Проверка совместимости темы и плагинов

Переключитесь на дефолтную тему WordPress, например, Twenty Twenty-One. Если товары появились — проблема в вашей теме.

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

3. Регенерация таксономий и пересоздание индексов

Обновление может привести к нарушению связей с таксономиями. Для исправления выполните в functions.php вашей темы временный код:

function reassign_product_terms() {
    $args = [
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
        'fields' => 'ids'
    ];
    $products = get_posts($args);
    foreach ($products as $product_id) {
        wp_set_object_terms($product_id, 'uncategorized', 'product_cat', true);
    }
}
add_action('init', 'reassign_product_terms');

Этот код назначит всем товарам категорию uncategorized. После выполнения удалите этот код из файла.

4. Восстановление постоянных ссылок

Перейдите в Настройки > Постоянные ссылки и нажмите «Сохранить изменения» без изменения настроек. Это сбросит правила .htaccess и структуру URL.

5. Проверка параметров запроса WP_Query

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

$args = [
    'post_type' => 'product',
    'posts_per_page' => 12,
    'post_status' => 'publish'
];
$query = new WP_Query($args);
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        wc_get_template_part('content', 'product');
    }
    wp_reset_postdata();
} else {
    echo 'Товары не найдены';
}

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

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

Проверьте также разделы категорий и поиск по товарам — они должны корректно отображать товары.

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

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

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

  • Используйте плагины кеширования с поддержкой AJAX и WooCommerce (например, WP Rocket) с правильно настроенными исключениями для страниц корзины и оплаты.
  • Регулярно обновляйте WooCommerce, тему и плагины, но сначала тестируйте обновления на локальной копии сайта.
  • Для мониторинга ошибок PHP используйте плагин Query Monitor — он поможет быстро найти конфликтующие плагины или темы.
  • Если используете кастомные запросы WP_Query, минимизируйте их количество и используйте кеширование с Transients API.

Сравнение способов решения

МетодОписаниеПлюсыМинусы
Отключение плагинов/темПоиск конфликта путем отключенияБыстрый локатор проблемыВременное нарушение функционала сайта
Регенерация таксономийНазначение категорий товарамИсправляет связи с таксономиямиТребуется доступ к коду и перезапуск сайта
Очистка кэшаУдаление устаревших данныхПростое и эффективноеНе решает ошибки кода
Пересоздание постоянных ссылокОбновление правил URLРешает 404 ошибкиНе влияет на логику вывода
WooCommerce: как использовать хуки для точечной кастомизации шаблонов
02.06.2026
WooCommerce: как исправить проблему с неотображением атрибутов вариаций товаров
12.05.2026
Как удалить параметр версии из URL-адресов CSS и JS в WordPress
24.01.2026
WooCommerce: автоматическое удаление заказов по статусу и времени
30.05.2026
Как отключить автоматическое сохранение черновиков в WordPress
25.03.2026