На небольших и средних сайтах WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной генерации архивов: категории, теги, авторы, даты, пагинация, страницы вложений, параметры сортировки. Поисковик видит несколько URL с почти одинаковым содержимым и начинает тратить краулинговый бюджет на лишние страницы. На практике это особенно заметно после переноса сайта, включения нового шаблона или установки плагина, который добавил свои архивы и фильтры.
Ниже — рабочий сценарий: как найти источник дублей, что закрыть от индексации, что оставить, и как проверить, что изменения действительно сработали.
Диагностика: какие дубли WordPress создаёт чаще всего
Перед правками важно понять, что именно дублируется. Не все архивы нужно закрывать. Категории часто полезны для SEO, а вот теги на многих сайтах превращаются в тонкие страницы без уникальной ценности. Сначала проверьте, какие URL уже попали в индекс и какие из них повторяют один и тот же набор записей.
Что смотреть в первую очередь
- страницы тегов:
/tag/...; - архивы автора:
/author/...; - архивы по дате:
/2026/08/; - страницы вложений медиафайлов;
- пагинацию архивов:
/page/2/,/page/3/; - URL с параметрами, которые меняют сортировку или фильтр.
Если у вас есть доступ к Google Search Console, откройте отчёт по страницам и посмотрите, какие URL индексируются, но не несут самостоятельной ценности. Если доступа нет, быстрое ручное сравнение можно сделать через поиск по сайту и просмотр HTML-источника архивов: часто проблема видна уже по заголовкам и сниппетам.
Что закрывать, а что оставлять в индексе
Здесь легко ошибиться и «выключить SEO» целиком. Правильнее разделить архивы на полезные и технические. Категории и некоторые страницы рубрик можно оставить в индексе, если у них есть уникальные тексты, понятная структура и стабильный спрос. Теги и архивы автора на контентных сайтах часто лучше закрыть или хотя бы пометить как noindex, follow.
| Вариант | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Плагин для SEO | Нужно быстро закрыть архивы без кода | Меньше ручной работы | Зависимость от настроек плагина |
| Код в теме или мини-плагине | Нужен точечный контроль | Прозрачно и предсказуемо | Нужно тестировать после обновлений |
| Оставить как есть | Архивы реально полезны и уникальны | Не ломаете структуру сайта | Риск дублей остаётся, если контент слабый |
Если нужен быстрый и аккуратный способ чистки дублей, часто проще использовать специализированный SEO-плагин с настройками индексации архивов. Например, у Clearfy Pro есть инструменты для отключения лишних архивов и технической чистки сайта. Но если вам нужен контроль на уровне кода, ниже есть рабочий вариант без лишних зависимостей.
Пошаговое решение через код
Если задача — убрать дубли точечно, лучше не править ядро и не вносить изменения в шаблон «на глаз». Безопаснее добавить код в мини-плагин или в functions.php дочерней темы. Для продакшена мини-плагин предпочтительнее: так вы не потеряете настройки после обновления темы.
1. Закрываем от индексации архивы тегов, автора и даты
Этот вариант добавляет noindex, follow на выбранные архивы. Поисковик не должен индексировать такие страницы, но сможет переходить по ссылкам внутри них.
<?php
add_action( 'wp_head', function () {
if ( is_tag() || is_author() || is_date() ) {
echo '<meta name="robots" content="noindex, follow" />' . "\n";
}
}, 1 );Если у вас уже подключён SEO-плагин, проверьте, не выводит ли он собственный robots meta. Два разных тега robots на одной странице — частая причина конфликтов.
2. Убираем страницы вложений в редирект на файл или запись
Страницы вложений часто создают бесполезные URL, особенно если медиафайлы индексируются отдельно. Если вам не нужны отдельные страницы вложений, можно перенаправлять их на сам файл или на родительскую запись.
<?php
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$url = wp_get_attachment_url( get_queried_object_id() );
if ( $url ) {
wp_redirect( $url, 301 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Если у вложения нет файла или URL не определяется, редирект на главную — запасной вариант, но лучше проверить медиатеку и структуру загрузок.
3. Снимаем индексацию с архивов, которые не несут ценности
Иногда удобнее не трогать шаблон, а управлять мета-данными через фильтры. Для архивов можно менять заголовки и канонические URL, если у вас есть чёткая логика, какие страницы должны индексироваться.
<?php
add_filter( 'wp_robots', function ( $robots ) {
if ( is_tag() || is_author() || is_date() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот способ предпочтительнее, чем вставка готового HTML в шаблон, потому что он работает на уровне WordPress и меньше зависит от темы.
Если дубли создаёт не архив, а фильтр или параметр URL
На многих сайтах проблема не в тегах, а в параметрах вроде ?orderby=, ?filter=, ?utm_ и похожих. Такие URL могут плодить копии одной и той же страницы. Здесь важно не закрывать всё подряд, а понять, какие параметры действительно меняют контент, а какие только мешают индексации.
Для технических параметров лучше использовать канонический URL, чтобы поисковик понимал основную версию страницы. В WordPress это можно сделать через фильтр wp_get_canonical_url или через SEO-плагин, если он уже управляет canonical.
<?php
add_filter( 'wp_get_canonical_url', function ( $canonical, $post ) {
if ( is_singular() && ! empty( $_GET ) ) {
return get_permalink( $post );
}
return $canonical;
}, 10, 2 );Не используйте этот код вслепую на страницах, где параметры реально меняют смысл контента, например в каталогах с фильтрами. Там canonical должен отражать логику сайта, а не просто «сбрасывать» всё в одну страницу.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой. Нужно убедиться, что WordPress отдаёт нужные мета-теги и редиректы, а поисковик видит именно те URL, которые вы оставили.
- Откройте архив тега, автора и даты в браузере и посмотрите исходный код страницы.
- Проверьте наличие
<meta name="robots" content="noindex, follow" />. - Для страниц вложений убедитесь, что срабатывает 301-редирект.
- Проверьте canonical на страницах с параметрами URL.
- В Search Console запросите повторную проверку важных страниц.
Если используете кэш, очистите его после правок. Иначе вы можете смотреть старую версию страницы и решить, что код не работает.
Частые ошибки и как их исправить
Дубли закрыли, но архивы всё равно в индексе
Обычно причина в том, что страницы уже были проиндексированы раньше. noindex не удаляет URL мгновенно. Нужны время, повторный обход и отсутствие внутренних ссылок, которые продолжают активно вести на эти страницы.
Поставили noindex на всё подряд
Так часто ломают категории, которые реально приводят трафик. Перед закрытием проверьте, есть ли у архива уникальный текст, хлебные крошки, нормальная структура и поисковый спрос. Если страница полезна пользователю, не спешите убирать её из индекса.
Сломали SEO-плагин конфликтом мета-тегов
Если у вас уже стоит плагин, который управляет robots meta и canonical, не добавляйте второй независимый механизм без проверки. В итоге поисковик может увидеть противоречивые указания: один плагин говорит index, другой — noindex.
Редирект с вложений ведёт в цикл
Так бывает, если вложение ссылается само на себя или URL файла недоступен. Проверьте, что wp_get_attachment_url() возвращает корректный адрес, а редирект не запускается повторно на целевой странице.
Практические советы по безопасности и производительности
Любые изменения, связанные с индексацией, лучше вносить через дочернюю тему или мини-плагин. Не редактируйте родительскую тему напрямую: после обновления правки исчезнут. Перед выкладкой на боевой сайт проверьте код на staging-копии и сделайте резервную копию базы.
Если на сайте много технических страниц, полезно дополнительно почистить лишние архивы, медиа-страницы и служебные элементы. В этом случае удобно использовать инструменты вроде Clearfy Pro, если вам важнее готовая настройка, чем ручная сборка логики.
И ещё один практический момент: после отключения дублей не забывайте про внутреннюю перелинковку. Если вы закрыли теги и авторов, но оставили на них десятки ссылок в шаблоне, поисковик всё равно будет тратить время на обход этих URL. Лучше убрать лишние ссылки там, где они не нужны пользователю.