Дубли в WordPress часто появляются не из-за ошибки в одном месте, а из-за сочетания шаблона темы, архивов, пагинации и служебных URL. В итоге поисковик видит несколько страниц с почти одинаковым содержимым: рубрика, её вторая страница, архив автора, архив даты, теги, а иногда ещё и версии с параметрами. Если не разобрать это на уровне шаблонов и индексации, сайт начинает распылять вес и тратить краулинговый бюджет на мусорные URL.
Ниже — рабочий сценарий: как сначала диагностировать источник дублей, затем убрать лишнее без поломки навигации и проверить, что изменения действительно сработали.
Когда проблема уже есть: что именно искать
Сначала не трогайте код. Посмотрите, какие URL реально индексируются и где повторяется один и тот же текст. Для WordPress типичный набор проблем выглядит так:
- архивы рубрик и тегов с одинаковыми сниппетами на первой и второй странице;
- страницы пагинации, которые попадают в индекс вместо основной категории;
- архивы автора и даты, если они не несут отдельной ценности;
- страницы с параметрами сортировки, фильтрации или UTM, которые создают дубли;
- страницы вложений медиафайлов, если они открыты и индексируются отдельно.
Быстрая диагностика без плагинов
Проверьте несколько вещей вручную:
- Откройте исходный код страниц архива и пагинации.
- Посмотрите, есть ли на второй и последующих страницах уникальный
<title>иmeta description. - Проверьте, не отдают ли служебные страницы код 200 там, где должны быть закрыты от индексации.
- Сравните URL с параметрами:
?replytocom=,?utm_,?sort=,?filter=.
Если у вас стоит SEO-плагин, сначала проверьте его настройки. Часто проблема не в WordPress как таковом, а в том, что архивы автора, даты или теги оставлены открытыми по умолчанию.
Что отключать, а что оставлять: короткое сравнение подходов
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы и задать noindex для служебных страниц | Не убирает причину дубля в шаблоне |
| Код в теме или мини-плагине | Нужно точечно изменить поведение архивов и каноникал | Требует аккуратности при обновлениях |
| Комбинация | Нужно и закрыть индексацию, и убрать лишние URL из шаблонов | Нужно тестировать два слоя сразу |
Пошаговое решение: закрываем дубли на уровне WordPress
1. Отключите лишние архивы, если они не нужны
Если архивы автора и даты на сайте не несут самостоятельной ценности, их лучше закрыть от индексации и не использовать как посадочные страницы. Это не ломает сайт для пользователей, но снижает количество дублей.
Если вы используете SEO-плагин, настройте это там. Если нужен код, можно добавить noindex для конкретных архивов через wp_robots:
<?php
add_filter('wp_robots', function ($robots) {
if (is_author() || is_date()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант не удаляет архив физически, но говорит поисковику не индексировать страницу. Для многих проектов этого достаточно.
2. Уберите индексацию страниц вложений
Страницы вложений часто создают тонкие дубли: на них почти нет контента, но они доступны по отдельному URL. Если у вас нет осознанной стратегии под медиа-страницы, лучше перенаправлять их на сам файл или родительскую запись.
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_safe_redirect(get_permalink($parent), 301);
exit;
}
wp_safe_redirect(home_url('/'), 301);
exit;
}
});Так вы убираете отдельную индексируемую страницу вложения и сохраняете нормальный путь для пользователя.
3. Приведите пагинацию к предсказуемому виду
Пагинация сама по себе не является ошибкой, но часто именно она становится источником дублей, если на страницах 2, 3, 4 повторяются одинаковые заголовки, описания и блоки текста. Проверьте шаблон архива: у второй страницы должен быть понятный title, а не копия первой.
Для архивов можно изменить pre_get_document_title и добавить номер страницы:
<?php
add_filter('pre_get_document_title', function ($title) {
if (is_paged()) {
$paged = max(2, (int) get_query_var('paged'));
$title .= ' — страница ' . $paged;
}
return $title;
});Это не решает все SEO-вопросы, но помогает убрать одинаковые заголовки у страниц пагинации.
4. Закройте мусорные параметры в URL
Если на сайте есть параметры, которые не должны создавать отдельные страницы, их нужно либо игнорировать на уровне каноникал, либо не допускать их индексации. Самый безопасный путь — не строить на них отдельный контент и не ссылаться на такие URL из шаблона.
Для типовых параметров вроде replytocom можно убрать их из канонического URL через фильтр get_canonical_url:
<?php
add_filter('get_canonical_url', function ($canonical, $post) {
if (empty($canonical)) {
return $canonical;
}
$canonical = remove_query_arg(array('replytocom', 'utm_source', 'utm_medium', 'utm_campaign'), $canonical);
return $canonical;
}, 10, 2);Если у вас есть собственные фильтры или сортировки, лучше отдельно проверить, не создают ли они десятки URL с одинаковым контентом.
Если дубли рождаются в теме: что править в шаблонах
Иногда проблема не в SEO-настройках, а в самой теме. Например, на архиве выводится одинаковый блок вступительного текста на каждой странице пагинации, а заголовок рубрики не меняется. Или тема дублирует H1 в шапке и в контенте.
Проверьте:
- нет ли повторяющегося H1 в шаблоне архива;
- не выводится ли один и тот же текст в
archive.phpиcategory.php; - не дублируется ли хлебная крошка в нескольких местах;
- не вставляет ли плагин SEO одинаковый
titleиdescriptionдля всех страниц архива.
Если нужно, вынесите текстовое описание рубрики только на первую страницу архива:
<?php
if (is_category() && !is_paged()) {
the_archive_description('<div class="archive-description">', '</div>');
}Это простой способ не размножать один и тот же текст на всех страницах пагинации.
Проверка результата после внедрения
После изменений не ограничивайтесь открытием главной страницы. Проверка должна быть по URL-типам, иначе легко пропустить часть дублей.
- Откройте архив рубрики, страницу 2 и страницу 3.
- Проверьте, что у них разные заголовки и нет лишнего повторяющегося текста.
- Убедитесь, что архивы автора и даты отдают
noindex, если вы их закрывали. - Проверьте, что страницы вложений редиректят на родительскую запись или на главную.
- Сравните канонический URL в исходном коде и фактический адрес страницы.
- Прогоните несколько проблемных URL через Google Search Console или аналогичный инструмент проверки URL.
Если после правок поисковик всё ещё видит старые версии, это не всегда ошибка. Индексация и переобход занимают время. Важно, чтобы новые сигналы были стабильными: одинаковый каноникал, noindex на служебных страницах и отсутствие внутренних ссылок на мусорные URL.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Иногда закрывают от индексации не только архивы автора, но и полезные рубрики, которые реально приводят трафик. В результате сайт теряет видимость там, где она была нужна. Перед правкой разделите страницы на полезные и служебные.
Редиректят пагинацию на первую страницу
Это распространённая, но спорная практика. Если у архива есть нормальная пагинация, не нужно отправлять все страницы 2+ на первую. Пользователь потеряет доступ к старым материалам, а поисковик увидит нестабильное поведение URL.
Оставляют дубли в меню и хлебных крошках
Если один и тот же раздел доступен через несколько маршрутов, это не всегда проблема. Проблема начинается, когда все маршруты индексируются и выглядят как самостоятельные страницы. Проверьте внутренние ссылки и уберите лишние точки входа.
Меняют только мета-теги, но не шаблон
Если на странице физически повторяется один и тот же контент, один лишь новый title не спасёт. Нужно убрать источник дубля: шаблон, архив, вложения или параметры URL.
Практика безопасности и производительности
Любые правки лучше вносить не в основной файл темы, а в дочернюю тему или небольшой mu-plugin. Так вы не потеряете изменения после обновления. Если правка касается редиректов, обязательно используйте wp_safe_redirect(), а не голый header() без проверки.
Ещё один момент — не плодите тяжёлые проверки в каждом запросе. Если вы добавляете фильтры на wp_robots, template_redirect или pre_get_document_title, держите логику короткой и предсказуемой. Для массовой чистки дублей и служебных страниц иногда удобнее использовать специализированные инструменты вроде Clearfy Pro, если вам нужен именно набор готовых настроек для noindex, архивов и технической чистки. Подробности можно посмотреть на странице плагина.
Если после внедрения правок у вас остались только полезные архивы и предсказуемая пагинация, это уже хороший результат. Дальше имеет смысл периодически проверять Search Console, чтобы не возвращались новые служебные URL, особенно после установки плагинов фильтрации, комментариев или медиа-галерей.