Как закрыть от индексации страницы товаров без названия и описания в WordPress

На WordPress часто остаются страницы, которые технически существуют, но для поиска почти не несут пользы: пустые карточки, черновые товары, страницы без названия и описания, служебные записи после импорта. Если такие URL доступны роботам, они начинают размывать качество индекса и тянуть на себя краулинговый бюджет. Проблема не в самом факте существования страницы, а в том, что она не должна конкурировать с нормальными материалами сайта.

Ниже разберём практический сценарий: как найти такие страницы, чем их закрывать и как проверить, что решение сработало. Примеры подойдут для обычного WordPress-сайта, а не только для магазина.

Когда это действительно проблема

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

Типичные признаки тонких страниц

  • в админке есть записи или товары, но на фронтенде выводится только шаблон без контента;
  • страница открывается по прямой ссылке, но не имеет ценности для поиска;
  • в индексе уже есть URL с пустым title или с дублирующимся заголовком;
  • такие страницы появляются после импорта, миграции или массового создания записей;
  • в Search Console растёт число «Просканировано, но не проиндексировано» без понятной причины.

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

Начните не с кода, а с проверки факта. В админке WordPress откройте список записей, страниц или товаров и отфильтруйте те, у которых нет содержимого. Если у вас есть доступ к базе, можно быстро найти записи с пустым post_content и стандартным статусом публикации.

SELECT ID, post_title, post_type, post_status
FROM wp_posts
WHERE post_status = 'publish'
  AND post_content = ''
  AND post_type IN ('post', 'page', 'product');

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

  • есть ли уникальный title;
  • есть ли основной текст;
  • не возвращает ли страница 404 или редирект;
  • не дублируется ли она с другой версией URL;
  • не закрыта ли уже через noindex или canonical.

Если страница уже закрыта, но всё равно попадает в отчёты, причина может быть в кеше, в старых ссылках или в том, что робот ещё не переобошёл URL.

Что выбрать: noindex, canonical или удаление

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

ПодходКогда использоватьКомпромисс
noindexСтраница должна открываться, но не индексироватьсяURL остаётся доступным для обхода
canonicalЕсть основная страница-заменаНе всегда срабатывает как жёсткий запрет
Удаление и 301Страница больше не нужнаНужно подобрать релевантный редирект

Если страница пустая и не нужна вообще, лучше удалить её и отдать 301 на ближайший релевантный URL. Если страница нужна для пользователей, но не должна индексироваться, используйте noindex. Canonical полезен как дополнительный сигнал, но не как единственный способ закрытия.

Пошаговое решение через код

Самый надёжный вариант — добавить noindex для конкретного типа страниц или для записей с определённым признаком. Ниже пример для обычных записей WordPress: если у поста пустой заголовок или контент, в <head> добавляется мета-тег robots.

add_action('wp_head', function () {
    if (!is_singular()) {
        return;
    }

    global $post;

    if (!$post instanceof WP_Post) {
        return;
    }

    $title = trim(get_the_title($post));
    $content = trim(strip_tags($post->post_content));

    if ($title === '' || $content === '') {
        echo "\n" . '<meta name="robots" content="noindex,follow">' . "\n";
    }
}, 1);

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

Если задача касается конкретного типа записей, безопаснее ограничить логику по post_type. Например, для служебного типа product или собственного CPT:

add_action('wp_head', function () {
    if (!is_singular('product')) {
        return;
    }

    $post_id = get_queried_object_id();
    $title = trim(get_the_title($post_id));
    $content = trim(strip_tags(get_post_field('post_content', $post_id)));

    if ($title === '' || $content === '') {
        echo '<meta name="robots" content="noindex,follow">' . "\n";
    }
}, 1);

Если нужен canonical на основную страницу

Когда пустая страница является дублем другой, можно добавить canonical на целевой URL. Для этого есть фильтр wpseo_canonical в Yoast SEO, но если вы не используете этот плагин, лучше не привязываться к нему. В чистом WordPress можно вывести canonical вручную, но только если вы контролируете шаблон и понимаете, что делаете.

add_action('wp_head', function () {
    if (!is_singular()) {
        return;
    }

    $post_id = get_queried_object_id();
    $target = get_post_meta($post_id, '_canonical_url', true);

    if ($target) {
        echo '<link rel="canonical" href="' . esc_url($target) . '">' . "\n";
    }
}, 5);

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

Когда лучше закрыть через robots.txt

robots.txt подходит для разделов, которые не должны сканироваться вообще, например служебных каталогов или технических URL. Но для уже проиндексированных страниц это слабый инструмент: робот может перестать заходить на URL, но сам адрес ещё долго останется в индексе без переобхода.

Поэтому для тонких страниц robots.txt — не основной способ, а вспомогательный. Если URL уже в индексе, сначала ставьте noindex или делайте 301/410, а потом при необходимости ограничивайте обход.

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

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

  • Откройте страницу и убедитесь, что в <head> есть noindex,follow или canonical на нужный URL.
  • Посмотрите ответ сервера через curl -I, если страница должна отдавать 301 или 410.
  • Проверьте исходный код на наличие второго мета robots от темы или SEO-плагина.
  • В Google Search Console отправьте URL на проверку и посмотрите, как робот видит страницу.
  • Через несколько дней проверьте отчёт по индексированию и число исключённых URL.
curl -I https://example.com/slug-page/

Если вы используете noindex, важно, чтобы страница не блокировалась в robots.txt. Иначе робот может не увидеть мета-тег и страница будет выпадать из индекса дольше, чем вы рассчитывали.

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

Закрыли URL в robots.txt раньше, чем поставили noindex

Это частая ошибка. Робот не может зайти на страницу и увидеть мета-тег. В результате URL остаётся в индексе как «заблокированный robots.txt» или исчезает не так быстро, как ожидалось. Исправление простое: сначала noindex или 301, потом уже ограничение обхода.

Поставили noindex, но страница всё равно индексируется

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

Закрыли полезные страницы вместе с мусорными

Так бывает, если условие слишком широкое: например, вы проверяете только пустой контент, а у части записей текст выводится через ACF или блоки. В этом случае лучше привязаться к конкретному типу записей, статусу, метаполю или шаблону.

Оставили пустые страницы без редиректа

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

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

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

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

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

В итоге рабочая схема обычно выглядит так: сначала находите пустые и бесполезные страницы, затем выбираете между noindex, canonical и удалением, после этого проверяете исходный код, ответ сервера и отчёты Search Console. Именно такая последовательность даёт предсказуемый результат и не ломает нормальные страницы сайта.

Как закрыть страницы поиска WordPress от индексации без поломки внутреннего поиска
19.08.2026
Как закрыть от индексации страницы товаров без названия и описания в WordPress
08.09.2026
Как закрыть от индексации файлы attachment в WordPress без поломки медиа-библиотеки
30.08.2026
Как закрыть от индексации параметры фильтров в WordPress
26.08.2026
Как закрыть страницы авторов в WordPress без потери индексации полезного контента
16.08.2026