WPExperts

Как настроить noindex для страниц пагинации и фильтров в WordPress

Если на сайте начали плодиться дубли архивов, страниц с параметрами и пагинации, проблема обычно не в «плохом SEO», а в том, что WordPress отдаёт поисковикам слишком много похожих URL. Чаще всего это видно в отчётах Search Console: одинаковые заголовки, страницы вида ?sort=, ?filter=, /page/2/, а также архивы тегов и авторов, которые не несут самостоятельной ценности.

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

Когда noindex действительно нужен

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

Типичные кандидаты на noindex:

  • страницы архивов с параметрами сортировки и фильтрации;
  • вторые и последующие страницы пагинации в разделах, где это не даёт SEO-ценности;
  • служебные архивы тегов, авторов и дат, если они пустые или дублируют рубрики;
  • страницы поиска по сайту;
  • страницы вложений медиафайлов, если они не нужны в выдаче.

Диагностика: какие URL создают дубли

Перед правками стоит посмотреть, что именно индексируется и что реально обходится ботом. Самый быстрый путь — открыть Search Console и отфильтровать страницы с одинаковыми заголовками или каноникалами, а затем проверить шаблоны URL на сайте.

Что проверить вручную

  • Есть ли URL с параметрами ?sort=, ?filter=, ?orderby=, ?s=.
  • Есть ли архивы с пагинацией вида /page/2/, /page/3/.
  • Открываются ли страницы тегов, авторов и дат без уникального текста.
  • Не создаёт ли тема или плагин отдельные страницы для одного и того же контента.

Быстрая проверка через код

Если нужно понять, какие параметры приходят в запрос, можно временно залогировать их в error_log. Это полезно на staging-сайте или при короткой диагностике на проде.

add_action('template_redirect', function () {
    if (is_admin()) {
        return;
    }

    $query_string = $_SERVER['QUERY_STRING'] ?? '';
    if ($query_string) {
        error_log('WP query string: ' . $query_string);
    }
});

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

Что лучше: noindex, canonical или редирект

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

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

Пошаговое решение: закрываем пагинацию и фильтры

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

add_filter('wp_robots', function ($robots) {
    if (is_search()) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
        return $robots;
    }

    if (!empty($_GET['sort']) || !empty($_GET['filter']) || !empty($_GET['orderby'])) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
        return $robots;
    }

    if (is_paged()) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
        return $robots;
    }

    return $robots;
});

Этот вариант использует стандартный фильтр wp_robots, который WordPress применяет для формирования meta robots. Он подходит для современных версий ядра и не требует выдуманных хуков.

Если нужно закрыть только отдельные архивы

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

add_filter('wp_robots', function ($robots) {
    if (is_tag() || is_author() || is_date()) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
    }

    return $robots;
});

Важно не ставить noindex на всё подряд. Если закрыть рубрики, которые реально приводят трафик, можно потерять полезные посадочные страницы.

Как убрать параметры из индекса без поломки фильтров

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

Пример: если на странице каталога есть сортировка по цене, а URL меняется на ?sort=price, можно отправлять canonical на чистый URL без параметра.

add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_singular()) {
        return $canonical;
    }

    if (!empty($_GET['sort']) || !empty($_GET['filter']) || !empty($_GET['orderby'])) {
        return home_url(add_query_arg([], $GLOBALS['wp']->request));
    }

    return $canonical;
}, 10, 2);

Здесь есть нюанс: canonical для архивов и нестандартных страниц может потребовать отдельной логики, если тема или плагин формируют URL не так, как ожидается. Поэтому после внедрения обязательно смотрите исходный HTML страницы.

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

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

  • в <head> появился нужный meta robots;
  • canonical указывает на правильный URL;
  • страницы с параметрами не попадают в индекс;
  • основные страницы не получили случайный noindex.

Проверять удобно так:

  1. Откройте страницу с параметром, например ?sort=price.
  2. Посмотрите исходный код страницы и найдите meta name="robots".
  3. Убедитесь, что canonical ведёт на чистый URL.
  4. Проверьте страницу в Search Console через проверку URL.

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

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

Ставят noindex на все архивы без разбора

Это частая ошибка после установки SEO-плагина или ручной правки шаблона. В итоге исчезают из индекса полезные рубрики. Исправление простое: разделите архивы на полезные и технические, а затем закрывайте только вторые.

Закрывают страницу, но не убирают параметр из генерации

Если фильтр всё равно создаёт сотни URL, бот продолжит тратить ресурсы на обход. В таком случае нужно не только ставить noindex, но и проверить, можно ли убрать лишний параметр из ссылок, формы или JS-логики.

Смешивают canonical и редирект на одной странице

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

Не проверяют пагинацию после обновления темы

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

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

Если на сайте много параметров и фильтров, не пытайтесь решать всё только через SEO-метки. Лишние URL создают нагрузку на сервер, кеш и базу. Иногда выгоднее ограничить генерацию страниц на уровне шаблона или плагина, чем потом закрывать их от индексации.

  • Не добавляйте логику в functions.php, если тема часто обновляется; лучше вынести в мини-плагин или MU-plugin.
  • Перед изменениями сделайте бэкап и проверьте на staging.
  • Если используете SEO-плагин, не дублируйте его настройки ручным кодом без необходимости.
  • Следите, чтобы noindex не попадал на страницы входа, оформления заказа или другие служебные URL, которые должны быть доступны только пользователям.

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

Если после внедрения всё сделано правильно, в индексе останутся только нужные страницы, а технические URL перестанут размывать структуру сайта. Самый надёжный критерий — Search Console перестаёт показывать рост мусорных вариантов, а в исходном коде страниц вы видите именно ту директиву, которую планировали поставить.

×
-15%
на премиум-тему
Bono

Создай магазин мечты
на WordPress!

↓ ↓ ↓ ↓ ↓
Купить со скидкой »