Дубли title и meta description в WordPress обычно появляются не из-за одной ошибки, а из-за цепочки: тема выводит свои метатеги, SEO-плагин добавляет свои, а на части архивов или страниц шаблон собирает одинаковые значения из заголовка записи. В итоге поисковик видит несколько страниц с почти одинаковыми сниппетами, а в отчётах по индексации появляются повторяющиеся URL и слабые сигналы релевантности.
Ниже разберём не абстрактную теорию, а рабочий сценарий: как быстро найти источник дублей, чем лучше исправлять проблему в теме или плагине и как проверить, что после правки на странице остался ровно один набор метатегов.
Как понять, что проблема именно в дублях метатегов
Сначала стоит отделить реальную проблему от ложной тревоги. Один и тот же title на нескольких страницах не всегда ошибка, если это архивы с одинаковым шаблоном. Но если у вас совпадают title и meta description у разных записей, категорий или страниц пагинации, это уже повод искать источник генерации.
Что проверить вручную
- Откройте страницу и посмотрите исходный код через
view-source:или инструменты разработчика. - Найдите все теги
<title>и<meta name="description">. - Проверьте, не выводится ли один и тот же тег дважды: от темы и от SEO-плагина.
- Сравните несколько похожих страниц: записи, рубрики, страницы автора, пагинацию.
Если в коде страницы есть два title или две description, это уже не SEO-нюанс, а техническая ошибка шаблона или плагина.
Быстрая диагностика через поиск по коду
Чаще всего источник дублей находится в одном из трёх мест: header.php, functions.php темы или в настройках SEO-плагина. Ищите прямые вызовы вроде wp_title(), ручной вывод <title>, а также функции плагина, которые добавляют метатеги в wp_head.
// Пример старого или конфликтного кода в теме
<title><?php bloginfo('name'); ?> | <?php wp_title(''); ?></title>
Если тема использует такой вывод вместе с поддержкой title-tag или SEO-плагином, дубли почти гарантированы.
Откуда берутся дубли title и description
На практике есть несколько типовых сценариев. У каждого свой способ исправления, и важно не лечить симптомы в одном месте, если источник находится в другом.
| Источник | Как выглядит | Что делать |
|---|---|---|
| Тема | Ручной <title> в header.php | Убрать ручной вывод и перейти на add_theme_support('title-tag') |
| SEO-плагин | Плагин добавляет свои метатеги в wp_head | Отключить дублирующий модуль или шаблон метатегов |
| Шаблон архива | Одинаковые title у рубрик, тегов и пагинации | Настроить шаблоны названий и описаний |
| Фильтры в коде | Случайный add_filter меняет метатеги повторно | Найти и убрать лишний фильтр |
Пошаговое решение без лишней ломки сайта
Шаг 1. Оставьте один источник метатегов
Если вы используете SEO-плагин, не дублируйте его работу в теме. Для современных тем правильнее отдать генерацию title WordPress и плагину, а ручной вывод в шаблоне убрать.
// functions.php темы
add_action('after_setup_theme', function () {
add_theme_support('title-tag');
});
После этого проверьте header.php. Если там есть ручной <title>, его нужно удалить. Иначе WordPress будет формировать заголовок сам, а тема продолжит выводить свой вариант.
Шаг 2. Не выводите description вручную, если это уже делает плагин
Для meta description в WordPress нет встроенного универсального механизма, поэтому его обычно отдаёт SEO-плагин. Если в теме есть собственный генератор описания, он должен быть либо полностью отключён, либо работать только когда SEO-плагин не активен.
// Пример безопасной проверки перед выводом собственного description
if ( ! defined('WPSEO_VERSION') ) {
$description = get_bloginfo('description');
if ( $description ) {
echo '<meta name="description" content="' . esc_attr( $description ) . '" />' . "\n";
}
}
Этот приём не идеален как постоянное решение, но он помогает быстро убрать дубли, если вы временно переводите сайт на один источник метатегов.
Шаг 3. Настройте шаблоны для архивов и пагинации
Одинаковые title часто появляются на страницах рубрик и пагинации. Здесь задача не в том, чтобы сделать каждый title уникальным любой ценой, а в том, чтобы шаблон отражал тип страницы. Для архивов полезно добавлять название рубрики, а для пагинации — номер страницы.
Если вы пишете шаблон сами, ориентируйтесь на is_paged() и single_cat_title() или аналогичные функции для нужного типа архива.
add_filter('document_title_parts', function ($parts) {
if ( is_category() ) {
$parts['title'] = single_cat_title('', false);
if ( is_paged() ) {
$parts['title'] .= ' — страница ' . get_query_var('paged');
}
}
return $parts;
});
Такой код нужно использовать аккуратно: если SEO-плагин уже управляет заголовками, лучше править шаблон в его настройках, а не перехватывать document_title_parts без необходимости.
Шаг 4. Уберите лишние фильтры и дублирующие хуки
Иногда проблема не в шаблоне, а в том, что в проекте осталось два одинаковых фильтра. Это часто случается после миграции темы, подключения дочерней темы или переноса сниппетов из старого проекта. Проверьте functions.php, mu-плагины и кастомные плагины.
Если видите несколько обработчиков, которые меняют один и тот же метатег, оставьте только один. В WordPress это особенно важно для хуков в wp_head, потому что они выполняются последовательно и легко создают повторный вывод.
Как проверить результат после правки
После изменения кода не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что в HTML-источнике остался один набор метатегов и что он не меняется на разных типах страниц.
- Откройте страницу в режиме
view-source:. - Найдите
<title>и убедитесь, что он один. - Найдите
meta name="description"и проверьте, что тег один. - Проверьте запись, рубрику, страницу автора и пагинацию.
- Сравните исходный код до и после правки, если проблема была массовой.
Если используете SEO-плагин, откройте его шаблоны и проверьте, не переопределяет ли он title для конкретных типов записей. Иногда дубли исчезают на главной, но остаются на архивных страницах, потому что там включён отдельный шаблон.
Частые ошибки и как их исправить
Оставили ручной title в теме и не заметили поддержку title-tag
Это самая распространённая ошибка. Тема продолжает печатать <title>, а WordPress уже формирует его через ядро. Решение простое: убрать ручной тег из header.php и оставить add_theme_support('title-tag').
Отключили description в SEO-плагине, но забыли про тему
Иногда разработчик выключает генерацию описания в плагине, а в теме остаётся собственный блок в wp_head. В результате дубли не исчезают, а становятся менее заметными. Ищите вывод не только в админке, но и в файлах темы.
Правили только главную страницу
Если проблема проявляется на рубриках или пагинации, изменение главной страницы ничего не даст. Нужно проверить все шаблоны: записи, архивы, страницы таксономий, поиск и пагинацию.
Сделали title слишком одинаковыми ради «чистоты»
Иногда пытаются решить проблему, задав один шаблон для всех страниц. Это плохая идея: метатеги должны быть не просто уникальными, а осмысленными. Для архивов и страниц пагинации допустим повторяемый шаблон, но он должен отражать контекст страницы.
Практические советы по безопасности и производительности
Любые правки метатегов лучше вносить через дочернюю тему или собственный мини-плагин, а не напрямую в файлы родительской темы. Тогда обновление темы не затрёт исправления. Если вы используете сниппеты в functions.php, держите их в отдельном блоке и комментируйте, что именно отключают или заменяют.
Если на сайте уже есть SEO-плагин, не ставьте второй ради одной функции. Два SEO-решения часто конфликтуют именно в wp_head, а это лишние запросы, лишний код и больше шансов получить дубли. Для чистки лишней разметки и дублей в шаблонах иногда удобнее использовать Clearfy Pro, но только как инструмент для точечной настройки, а не как замену пониманию того, откуда берётся вывод.
Мини-чек-лист перед публикацией
- В исходном коде страницы есть один
title. - В исходном коде страницы есть один
meta name="description". - Тема не выводит ручной
<title>поверхtitle-tag. - SEO-плагин не дублирует метатеги в
wp_head. - Архивы и пагинация имеют отдельные, но логичные шаблоны.
- После правки проверены не только записи, но и рубрики, поиск и страницы автора.
Если после всех изменений дубли остаются, почти всегда виноват не WordPress как таковой, а конкретный шаблон темы, кастомный плагин или остаток старой SEO-настройки. В таком случае быстрее всего помогает поиск по проекту по строкам title, description, wp_head и проверка активных mu-плагинов.