Как убрать архивные дубли в WordPress: category, tag, author и date без потери индексации

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

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

Где именно появляются дубли

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

Типовые источники проблем

  • архивы меток, если они дублируют рубрики;
  • архивы автора на сайтах с одним редактором;
  • архивы по дате, если они не несут самостоятельной ценности;
  • страницы пагинации архивов;
  • внутренний поиск WordPress;
  • страницы вложений медиафайлов, если они индексируются отдельно.

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

Диагностика: что проверить до правок

Сначала посмотрите, какие архивы реально индексируются. В Google Search Console откройте отчёт по страницам и найдите URL вида /tag/, /author/, /date/, а также пагинацию /page/2/. Если в индексе есть десятки или сотни таких адресов без заметного трафика, это уже кандидат на чистку.

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

Мини-чек-лист диагностики:

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

Какой подход выбрать: плагин, код или оба варианта

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

ПодходКогда подходитПлюсМинус
SEO-плагинНужно быстро закрыть архивы от индексацииБезопасно и без правки темыМеньше точности, зависит от настроек
Код в теме или mu-pluginНужен полный контроль над архивамиПрозрачная логика, не зависит от UIНужно аккуратно тестировать после обновлений
КомбинацияЕсть SEO-плагин, но часть архивов надо отключить полностьюГибко и предсказуемоНужно следить, чтобы не было конфликтов

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

Если вы хотите убрать из индекса архивы автора, даты и метки, но оставить рубрики, можно сделать это через фильтры и заголовки robots. Пример ниже не ломает сайт и не требует нестандартных API.

1. Закрываем лишние архивы от индексации

<?php
add_filter('wp_robots', function ($robots) {
    if (is_tag() || is_author() || is_date() || is_search()) {
        $robots['noindex'] = true;
        $robots['nofollow'] = true;
    }

    return $robots;
});

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

2. Убираем архивы, которые не нужны вообще

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

<?php
add_filter('author_link', function ($link) {
    return home_url('/');
});

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

3. Отключаем страницы вложений и редиректим их на файл или родительскую запись

Страницы вложений часто индексируются отдельно и дают пустой или почти пустой контент. Если они не нужны, их лучше редиректить.

<?php
add_action('template_redirect', function () {
    if (is_attachment()) {
        $parent = wp_get_post_parent_id(get_queried_object_id());

        if ($parent) {
            wp_safe_redirect(get_permalink($parent), 301);
            exit;
        }

        wp_safe_redirect(home_url('/'), 301);
        exit;
    }
});

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

Как настроить это через SEO-плагин

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

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

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

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

  1. Откройте архивы меток, автора и даты в режиме инкогнито.
  2. Посмотрите исходный код страницы и убедитесь, что в <meta name="robots"> или в заголовках есть noindex.
  3. Проверьте, что страницы вложений отдают 301 на родительскую запись или главную.
  4. В Search Console отправьте на переобход несколько проблемных URL.
  5. Через несколько дней проверьте, исчезли ли они из отчёта по индексированию.

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

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

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

Такое часто случается, когда в коде используют слишком общий условный оператор. Рубрики обычно полезнее меток, поэтому их не стоит закрывать автоматически без анализа структуры сайта. Исправление простое: пересмотрите условия и оставьте is_category() вне блока noindex, если рубрики реально нужны.

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

Причина обычно в том, что робот ещё не переобошёл страницу, либо на сайте есть каноникал, ведущий на сам архив. Проверьте исходный код и заголовки ответа сервера. Иногда проблема не в WordPress, а в кэше CDN или в SEO-плагине, который перезаписывает ваши настройки.

Удалили архив автора, но сломали ссылки в шаблоне

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

Редирект вложений ведёт не туда

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

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

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

Ещё один практический момент: не ставьте одновременно несколько плагинов, которые управляют robots, canonical и архивами. Они могут конфликтовать и генерировать противоречивые сигналы для поисковика. Если уже есть SEO-плагин, сначала проверьте его настройки, а потом добавляйте код только там, где интерфейс не даёт нужной точности.

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