Если в Search Console начинают всплывать предупреждения о дублирующихся title и meta description, проблема обычно не в «плохом SEO», а в конкретной настройке темы, плагина или шаблона архива. На небольшом сайте это может выглядеть как мелочь, но на практике дубли быстро размножаются: у записей, рубрик, тегов, пагинации, страниц автора и даже у вложений.
Ниже разберём, как найти источник дублей, что исправлять в первую очередь и как проверить, что после правки WordPress действительно отдаёт уникальные метаданные.
Где обычно появляются дубли title и description
Самые частые сценарии предсказуемы. WordPress сам по себе не генерирует SEO-мета в классическом смысле, но их добавляют темы и SEO-плагины. Именно там и возникают пересечения: один и тот же шаблон для разных типов страниц, одинаковый title у пагинации, пустой meta description, который подставляется из одного и того же шаблона, или дубли на страницах архивов.
Типовые источники проблемы
- архивы рубрик и тегов с одинаковым шаблоном title;
- страницы пагинации вида
/page/2/,/page/3/с тем же description, что и у первой страницы; - страницы автора, если на сайте один автор и шаблон не различает контент;
- вложения медиафайлов, которые индексируются как отдельные страницы;
- дубли из-за двух SEO-плагинов или одновременной работы темы и плагина;
- канонические URL настроены верно, а title/description всё равно повторяются — это уже отдельная задача, не путайте её с canonical.
Диагностика: как быстро найти источник дублей
Начинать лучше не с кода, а с проверки того, кто вообще выводит мета-теги. В WordPress это может быть тема, плагин SEO, кастомный functions.php или даже вставка через wp_head. Если править вслепую, легко получить пустые мета-теги или сломать вывод на части страниц.
Что проверить вручную
- Откройте проблемную страницу и посмотрите исходный код.
- Найдите
<title>и<meta name="description">. - Сравните их на нескольких страницах одного типа: записи, рубрики, теги, пагинация.
- Проверьте, не дублируется ли вывод через SEO-плагин и тему одновременно.
- Посмотрите, нет ли одинаковых шаблонов для архивов в настройках SEO-плагина.
Если нужен быстрый технический осмотр, можно временно вывести текущий URL и заголовок страницы в админке или логах, но чаще достаточно обычного просмотра исходника и отчёта Search Console.
Мини-проверка через PHP
Когда нужно понять, какой шаблон реально формируется на стороне WordPress, удобно временно добавить отладочный вывод в functions.php или в mu-plugin. Ниже пример, который пишет в лог текущий тип страницы и заголовок, если включён WP_DEBUG_LOG.
add_action('wp_head', function () {
if (defined('WP_DEBUG') && WP_DEBUG && current_user_can('manage_options')) {
error_log('URL: ' . home_url(add_query_arg([], $_SERVER['REQUEST_URI'])));
error_log('Title: ' . wp_get_document_title());
}
}, 1);Это не решение, а способ быстро понять, где именно формируется дубль. После диагностики код нужно убрать.
Как исправить дубли title и meta description без лишнего риска
Если у вас уже стоит SEO-плагин, сначала правьте шаблоны в нём. Это безопаснее, чем переопределять всё кодом. Код нужен тогда, когда шаблон плагина не закрывает конкретный кейс: например, у рубрик и тегов должны быть разные правила, или нужно исключить вложения из индексации и одновременно убрать их мета-теги.
Подход 1: исправить шаблоны в SEO-плагине
Проверьте настройки title и description для:
- записей;
- рубрик;
- меток;
- страниц автора;
- медиа-вложений;
- страниц пагинации.
Если плагин позволяет использовать переменные, не ставьте один и тот же шаблон на все типы архивов. Для рубрик и тегов лучше задавать разные формулы, а для пустых архивов — не генерировать description автоматически из одного и того же текста.
Подход 2: убрать дубли программно
Если мета-теги выводятся темой или кастомным кодом, можно точечно изменить title и description на проблемных типах страниц. Ниже пример для title, который делает заголовки архивов более различимыми и добавляет номер страницы пагинации.
add_filter('document_title_parts', function ($parts) {
if (is_category()) {
$parts['title'] = single_cat_title('', false) . ' — рубрика';
} elseif (is_tag()) {
$parts['title'] = single_tag_title('', false) . ' — метка';
} elseif (is_author()) {
$parts['title'] = get_the_author_meta('display_name') . ' — автор';
}
if (is_paged()) {
$parts['title'] .= ' — страница ' . max(2, get_query_var('paged'));
}
return $parts;
});Для meta description лучше не пытаться автоматически генерировать длинный текст на всех страницах подряд. Надёжнее задать правило только для архивов и не выводить описание там, где оно будет одинаковым.
add_action('wp_head', function () {
if (is_singular()) {
return;
}
$description = '';
if (is_category()) {
$description = term_description();
} elseif (is_tag()) {
$description = term_description();
} elseif (is_author()) {
$description = get_the_author_meta('description');
}
$description = wp_strip_all_tags($description);
$description = trim(preg_replace('/\s+/', ' ', $description));
if ($description !== '') {
echo '<meta name="description" content="' . esc_attr($description) . '">' . "\n";
}
}, 20);Этот пример намеренно простой: он не подменяет SEO-плагин, а только закрывает случаи, где description реально есть и не должен повторяться шаблонно.
Когда лучше не писать код
Если дубли идут из-за настроек SEO-плагина, сначала отключите лишний источник вывода. Два одинаковых <title> или два meta description в исходнике — это не «плохой шаблон», а конфликт. Кодом это лечить можно, но сначала нужно убрать саму причину.
| Вариант | Что даёт | Ограничение |
|---|---|---|
| Настройки SEO-плагина | Быстро исправляет шаблоны без правки темы | Не всегда хватает для точечных условий |
| Код в теме или mu-plugin | Можно закрыть редкие кейсы и архивы | Нужно тестировать после обновлений |
| Отключение лишнего вывода | Убирает дубли из исходника | Требует понимания, кто именно печатает мета-теги |
Пошаговый порядок работ
- Снимите список URL, где дубли повторяются чаще всего.
- Проверьте исходный код этих страниц и найдите источник вывода.
- Убедитесь, что title и description не печатаются дважды.
- Исправьте шаблоны в SEO-плагине или теме.
- Если нужно, добавьте точечный фильтр для архивов и пагинации.
- Очистите кеш страницы и кеш CDN, если он есть.
- Переобойдите проблемные URL в Search Console после проверки.
Как проверить, что решение сработало
Проверка должна быть не «на глаз», а по исходнику и по фактическому ответу страницы. Откройте несколько URL каждого типа и убедитесь, что:
- в HTML-исходнике только один
<title>; - на странице есть только один
meta name="description"; - у рубрик и тегов заголовки отличаются;
- страницы пагинации не копируют описание первой страницы;
- вложенные страницы медиа не индексируются, если они вам не нужны;
- после очистки кеша браузер не показывает старую версию.
Если используете Search Console, не ждите мгновенного пересчёта. Сначала проверьте HTML на сервере, потом уже смотрите отчёты индексации.
Частые ошибки и как их исправить
Два SEO-плагина одновременно
Классическая ошибка после миграции сайта. Один плагин оставляет старые мета-теги, второй добавляет новые. В итоге в коде два title или два description. Решение простое: оставить только один источник SEO-метаданных и удалить лишний вывод из темы.
Одинаковый шаблон для всех архивов
Если рубрики, теги и авторы используют одну и ту же формулу, дубли почти неизбежны. Разведите шаблоны хотя бы по типам страниц и добавляйте номер страницы пагинации там, где это уместно.
Автогенерация description из первого абзаца
Это удобно только до тех пор, пока на нескольких страницах не используется один и тот же шаблонный текст. Если описание повторяется, лучше задать его вручную для ключевых страниц и отключить автогенерацию для архивов.
Правки в теме вместо дочерней темы или mu-plugin
После обновления тема может перезаписать ваши изменения. Для точечных SEO-правок безопаснее использовать дочернюю тему или mu-plugin, если это часть постоянной логики сайта.
Безопасность и производительность
SEO-правки обычно кажутся безобидными, но они тоже влияют на производительность. Лишние фильтры в wp_head и тяжёлые вызовы в шаблонах архивов могут замедлить генерацию страницы. Не стоит каждый раз собирать description из сложных запросов к базе, если можно использовать уже доступные данные терма или записи.
Если на сайте много ручных правок в functions.php, лучше вынести их в отдельный mu-plugin. Так меньше шанс потерять изменения при обновлении темы и проще отключать проблемный код на тестовом стенде.
Для сайтов, где нужен более системный контроль дублей и технической чистки, можно посмотреть в сторону Clearfy Pro: у него есть инструменты для удаления лишнего SEO-мусора и части технических дублей. Но даже с плагином всё равно полезно понимать, какой именно шаблон создаёт повторяющиеся мета-теги.
Если после правок дубли остались, проблема часто не в title и description, а в том, что один и тот же контент доступен по нескольким URL. Тогда уже нужно отдельно разбирать каноникал, редиректы и правила индексации.