Как исключить товар из показа и поисковой индексации в WooCommerce

Диагностика задачи: зачем исключать товар из показа и индексации

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

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

Как проверить, что товар индексируется и отображается

  • Откройте страницу товара — он должен быть публично доступен.
  • Поиск по сайту — товар находится в результатах.
  • Проверьте страницу архива категорий — товар отображается.
  • Через Google Search Console или оператор site:site.ru в поиске Google — товарные страницы видны в индексе.

Пошаговое решение: скрытие товара от показа и поисковой индексации

1. Изменение статуса товара

Для начала измените статус товара на private или draft, чтобы он не отображался в публичных каталогах.

wp post update PRODUCT_ID --post_status=private

Где PRODUCT_ID — ID товара. Это можно сделать через админку вручную или WP-CLI.

2. Исключение товара из запросов WooCommerce

Если по каким-то причинам товар должен оставаться в статусе publish, можно программно исключить его из запросов каталога и поиска:

add_action('pre_get_posts', function($query) {
    if (!is_admin() && $query->is_main_query()) {
        if (is_shop() || is_product_category() || is_product_tag() || $query->is_search()) {
            // ID товара для исключения
            $exclude_ids = array(1234);
            $post__not_in = $query->get('post__not_in');
            if (!is_array($post__not_in)) {
                $post__not_in = array();
            }
            $query->set('post__not_in', array_merge($post__not_in, $exclude_ids));
        }
    }
});

3. Запрет индексации через мета-тег robots

Чтобы поисковики не индексировали страницу товара, добавьте в <head> мета-тег noindex, nofollow. Это можно сделать, подключившись к хуку wp_head:

add_action('wp_head', function() {
    if (is_product() && get_the_ID() === 1234) {
        echo '<meta name="robots" content="noindex, nofollow">';
    }
});

4. Альтернативный вариант — использовать SEO-плагины

Если на сайте установлен Yoast SEO или Rank Math, удобно выставлять для конкретных товаров мета-теги noindex и отключать отображение в поиске через интерфейс плагина.

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

  • Отключите кэш сайта и браузера.
  • Проверьте, что товар не отображается в каталоге и поиске сайта.
  • Откройте страницу товара — в коде страницы должен быть мета-тег noindex, nofollow.
  • Через консоль разработчика убедитесь, что запросы к REST API не возвращают товар (если нужно, дополнительно фильтруйте API).
  • В Google Search Console используйте инструмент проверки URL — убедитесь, что страница помечена как исключённая из индекса.

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

  • Ошибка: Товар виден в каталоге, хотя статус изменён на private.
    Причина: Кэширование или сторонний плагин кэширования.
    Решение: Очистите кэш сайта и браузера; проверьте работу на другом устройстве.
  • Ошибка: Мета-тег noindex не выводится.
    Причина: Хук wp_head не подключён или есть конфликты в теме.
    Решение: Проверьте тему, отключите плагины поочерёдно, убедитесь, что код размещён в functions.php или плагине.
  • Ошибка: Товар остаётся в поисковых результатах Google.
    Причина: Поисковик ещё не обновил индекс.
    Решение: Используйте Google Search Console для удаления URL из индекса и подождите несколько дней.

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

  • Не удаляйте товар из базы без необходимости — лучше скрывать через статус и фильтры.
  • Используйте WP-CLI для массовой смены статусов товаров, это быстрее и безопаснее.
  • Добавляйте фильтры исключения товаров в pre_get_posts, чтобы минимизировать нагрузку на базу.
  • При использовании SEO-плагинов настройте исключение товаров через интерфейс, чтобы избежать ошибок в коде.

Сравнение вариантов скрытия товара

МетодПреимуществаНедостаткиКогда использовать
Статус "private" или "draft"Простая реализация, исключение из каталога и поискаТовар недоступен на прямой ссылкеКогда товар временно не продаётся
Фильтрация в pre_get_posts + noindexТовар остаётся в базе и доступен по прямой ссылке, гибкостьТребует кода, можно забыть о кэшированииКогда нужен доступ по ссылке, но без индексации
Использование SEO-плагинов (Yoast, Rank Math)Удобный интерфейс, дополнительные SEO функцииЗависимость от плагинаДля управляющих SEO без кода
Как удалить или скрыть страницу в WordPress без удаления из базы
20.01.2026
WooCommerce: как удалить старые вариации товаров и ускорить базу
23.05.2026
Как создать адаптивный блок товара в WooCommerce с помощью хуков
05.01.2026
Как использовать WP-CLI для автоматизации задач WordPress
10.12.2025
Как добавить автоматическое отображение отзывов WooCommerce с помощью AJAX
21.03.2026