Дубли title и meta description в WordPress обычно всплывают не из-за одной ошибки, а из-за комбинации причин: архивы, пагинация, шаблоны темы, SEO-плагин, кастомные типы записей и ручные поля в редакторе. На небольшом сайте это выглядит как «просто странные сниппеты в выдаче», но на практике мешает индексации и усложняет контроль над страницами.
Ниже — рабочая схема: сначала быстро найти источник дублей, потом выбрать способ исправления и проверить результат без гаданий.
Как понять, что у вас именно дубли, а не просто плохой сниппет
Сначала стоит отделить реальную проблему от нормального поведения поисковика. Если в выдаче у нескольких URL одинаковый title или одинаковое описание, это уже повод разбираться. Особенно часто дубли появляются у:
- страниц пагинации архива;
- страниц тегов и рубрик с одинаковыми шаблонами;
- кастомных типов записей, где не настроены отдельные шаблоны;
- страниц, которые SEO-плагин и тема одновременно пытаются заполнить мета-теги;
- записей, где вручную задано описание, но тема выводит ещё и свой шаблонный вариант.
Быстрая диагностика в браузере и исходном коде
Откройте несколько проблемных URL и сравните исходный HTML. Ищите не только видимый заголовок вкладки, но и реальные мета-теги в <head>. Если там есть два meta name="description" или несколько вариантов title через разные шаблоны, проблема на стороне темы или плагинов.
<!-- пример того, что искать в исходнике -->
<title>Рубрика WordPress — Блог</title>
<meta name="description" content="Блог о WordPress">
<meta name="description" content="Статьи о WordPress и веб-разработке">Если дубли видны только в поисковой выдаче, а в исходнике их нет, значит поисковик сам переоценил шаблон страницы. Тогда задача — сделать мета-теги более точными и убрать повторяющиеся шаблоны на уровне сайта.
Где в WordPress чаще всего рождаются дубли
В реальных проектах источник почти всегда один из трёх: тема, SEO-плагин или ручная логика в functions.php. Неплохо работает простой аудит по цепочке.
| Источник | Как проявляется | Что делать |
|---|---|---|
| Тема | Одинаковые title/description на архивах и записях | Проверить шаблоны header.php, archive.php, single.php |
| SEO-плагин | Мета-теги генерируются автоматически, но шаблоны слишком общие | Настроить шаблоны для типов записей и архивов |
| Код в теме | Два источника выводят один и тот же тег | Оставить только один генератор мета-тегов |
Проверка через поиск по файлам
Если есть доступ к коду, начните с поиска по шаблонам темы и mu-плагинам. Ищите прямой вывод description, wp_title, document.title и любые кастомные функции, которые печатают мета-теги.
grep -Rni "meta name=\"description\"\|wp_title\|document.title\|title_tag" wp-content/themes wp-content/mu-plugins wp-content/pluginsНа практике это помогает быстро поймать старые темы, где до сих пор вручную собирают <title> вместо нормальной поддержки add_theme_support( 'title-tag' ).
Пошаговое решение: как убрать дубли без поломки шаблонов
Самая безопасная стратегия — оставить один источник генерации мета-тегов. Обычно это SEO-плагин или код темы, но не оба сразу.
Шаг 1. Уберите ручной вывод title из темы
Если тема до сих пор печатает <title> вручную, сначала проверьте, не дублируется ли он через поддержку ядра WordPress. В современных темах должен использоваться title-tag.
// functions.php
add_action( 'after_setup_theme', function () {
add_theme_support( 'title-tag' );
} );После этого в header.php не должно быть ручного <title>. Его выводит WordPress сам через wp_head().
Шаг 2. Настройте шаблоны SEO-плагина
Если вы используете SEO-плагин, проверьте шаблоны для записей, рубрик, тегов и кастомных типов. Проблема часто в том, что для всех архивов задано одно и то же описание вроде «Блог о WordPress», и оно повторяется на десятках URL.
Для страниц, где нет смысла показывать мета-описание, лучше оставить пустое поле или отключить его вывод, чем плодить одинаковые тексты. Это особенно актуально для технических архивов, пагинации и служебных страниц.
Шаг 3. Для отдельных типов записей задайте уникальные шаблоны
Если у вас есть, например, разделы с кейсами, обзорами или документацией, не используйте один шаблон title для всего сайта. В WordPress это можно сделать через фильтры SEO-плагина или через собственную логику, если плагин не нужен.
// Пример: безопасно меняем title для записей определённого типа
add_filter( 'document_title_parts', function( $parts ) {
if ( is_singular( 'case' ) ) {
$parts['title'] = get_the_title() . ' — кейс';
}
return $parts;
} );Такой подход полезен, если у вас несколько однотипных разделов и стандартный шаблон даёт слишком похожие заголовки.
Шаг 4. Уберите дубли description из темы и плагинов
Если тема выводит meta description вручную, а SEO-плагин делает то же самое, оставьте только один вариант. Иначе поисковик увидит два одинаковых или конфликтующих тега, а браузер и валидатор покажут ошибку.
В коде темы лучше не собирать description самостоятельно, если уже есть SEO-плагин. Исключение — очень лёгкий сайт без плагинов, где мета-теги генерируются через собственные функции и это действительно контролируется.
Когда лучше править кодом, а когда — настройками плагина
Если проблема локальная и связана только с несколькими типами страниц, проще исправить шаблоны в SEO-плагине. Если дубли идут из-за старой темы или нескольких источников генерации, быстрее и надёжнее убрать лишний код.
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройки плагина | Нужно быстро привести в порядок архивы и записи | Не решает конфликт с темой, если она тоже выводит мета-теги |
| Код темы | Есть доступ к шаблонам и нужен точечный контроль | Легко сломать разметку, если править без проверки |
| Комбинированно | Сайт уже живой, и нужно убрать дубли без миграции | Требует аккуратной диагностики |
Если нужен инструмент именно для чистки дублей и технических мелочей в WordPress, у WPShop есть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с ним сначала стоит понять, откуда именно идут дубли, а не включать всё подряд.
Проверка результата после внедрения
После правок не ограничивайтесь просмотром страницы в браузере. Нужно проверить именно HTML и то, как сайт выглядит для поисковика.
- Откройте страницу и посмотрите исходный код: должен быть один
titleи одинmeta name="description"или ни одного description, если он не нужен. - Проверьте несколько типов страниц: запись, рубрика, тег, архив автора, пагинация.
- Сравните заголовки и описания между похожими URL — они не должны быть одинаковыми без причины.
- Если используете Search Console, отправьте на переобход важные URL после исправления.
Полезно также проверить HTTP-ответ и кэш: иногда старый HTML остаётся в кэше CDN или плагина, и кажется, что правка не сработала. Очистите серверный кэш, объектный кэш и кэш браузера, затем повторите проверку.
Частые ошибки и как их исправить
Оставили два генератора мета-тегов
Самая частая причина — SEO-плагин включён, но тема всё ещё выводит свои title и description. Решение простое: оставить один источник. Если не уверены, временно отключите вывод в теме и проверьте исходник.
Использовали один шаблон для всех архивов
Когда у рубрик, тегов и архивов автора одинаковый шаблон, дубли появляются почти гарантированно. Исправление — разные шаблоны для разных типов архивов или отключение description там, где он не несёт пользы.
Не учли пагинацию
Страницы /page/2/, /page/3/ часто наследуют тот же title и description, что и первая страница архива. Если это мешает, настройте отдельную логику для пагинированных страниц или закройте их от индексации, если они не нужны в поиске.
Проверили только визуально
Визуально всё может выглядеть нормально, но в HTML останется старый тег из кэша или второй мета-блок из плагина. Проверяйте исходный код, а не только вкладку браузера.
Что сделать для безопасности и производительности
Если вы правите тему или подключаете собственные фильтры, не тащите логику в шаблоны без необходимости. Лучше вынести изменения в дочернюю тему или mu-плагин, чтобы обновление не затёрло правки.
Ещё один практический момент: не генерируйте description на лету через тяжёлые запросы к базе на каждом хите. Для мета-тегов достаточно использовать уже доступные данные записи, а не собирать их из нескольких запросов.
// Пример: аккуратный фильтр для description без лишних запросов
add_filter( 'pre_get_document_title', function( $title ) {
if ( is_singular() ) {
return $title;
}
return $title;
} );Если правка касается только SEO-логики, держите её отдельно от визуальных шаблонов. Так проще отлаживать и проще откатить изменения, если что-то пошло не так.
Мини-чек-лист перед публикацией правок
- В теме остался только один источник
title. meta descriptionне дублируется в исходном коде.- Для рубрик, тегов и архивов заданы разные шаблоны или осознанно отключён description.
- Пагинация проверена отдельно.
- Кэш очищен на стороне сайта и CDN.
- В Search Console отправлены на переобход ключевые URL.
Если после этого дубли всё ещё появляются, значит источник сидит глубже: в старом плагине, в кастомном SEO-модуле или в шаблоне дочерней темы. В таком случае лучше идти от исходника HTML к конкретному файлу, а не пытаться лечить выдачу «на глаз».