wpmeta.ru wordpress WPMeta.ru

Как исправить дубли метатегов title и description в WordPress

Дубли title и description в WordPress чаще всего появляются не из-за одной ошибки, а из-за наложения нескольких источников: тема выводит метатеги сама, SEO-плагин делает то же самое, а на архивных страницах и пагинации шаблон ещё и подставляет одинаковые значения. В итоге в исходном коде можно увидеть два <title>, повторяющиеся meta name="description" или одинаковые метатеги на разных URL.

Если это уже попало в индекс, поисковику становится сложнее понять, какая версия страницы основная. Ниже — рабочий сценарий: как быстро найти источник дублей, убрать лишний вывод и проверить, что проблема действительно решена.

Как понять, что у вас именно дубли метатегов

Сначала стоит убедиться, что проблема не в кэше браузера и не в расширении, которое меняет HTML на лету. Откройте страницу в режиме просмотра исходного кода и найдите строки с <title> и meta name="description". Если они встречаются дважды, это уже не визуальный баг, а ошибка генерации шаблона.

Типичные признаки

  • в исходнике есть два тега <title>;
  • description одинаковый на главной, рубриках и записях;
  • SEO-плагин включён, но тема всё равно добавляет свои метатеги;
  • на страницах пагинации метатеги не меняются;
  • в Search Console появляются дублированные страницы с похожими сниппетами.

Что проверить в первую очередь

  • активную тему и её файл header.php;
  • подключённый SEO-плагин и его настройки;
  • дочернюю тему, если правки уже вносились;
  • плагины, которые могут добавлять Open Graph, Twitter Cards или собственные SEO-блоки;
  • кэш страницы и CDN, если они используются.

Диагностика: откуда именно выводится дубль

Самая частая ошибка — удалять метатеги «на глаз», не найдя источник. Сначала нужно понять, кто именно печатает HTML. Для этого удобно временно отключать подозрительные плагины и сравнивать исходник страницы. Если дубли исчезают после деактивации SEO-плагина, значит конфликт в шаблоне темы. Если ничего не меняется, ищите код в functions.php или в подключаемом плагине.

Ещё один практичный способ — поиск по файлам темы. Ищите не только title, но и wp_head, meta name="description", og:, twitter:. Иногда разработчик добавляет собственный блок метатегов прямо в header.php, а потом ставит Yoast SEO или Rank Math поверх него.

grep -RniE 'meta name="description"|<title>|wp_head|og:|twitter:' wp-content/themes/your-theme

Если доступа к SSH нет, используйте поиск по файлам в редакторе кода или через файловый менеджер хостинга. Важно найти не только сам тег, но и место, где он формируется: в шаблоне, в хукe или в функции, подключённой через functions.php.

Пошаговое решение: убрать лишний вывод и оставить один источник

Правильная схема простая: один источник отвечает за title и description, остальные не дублируют их. На практике это обычно либо SEO-плагин, либо код темы. Смешивать оба варианта без явного разделения не стоит.

Шаг 1. Оставьте только один генератор title

Если тема уже поддерживает современный вывод заголовка через add_theme_support( 'title-tag' ), не печатайте <title> вручную в header.php. В противном случае WordPress и тема могут вывести заголовок дважды.

// functions.php дочерней темы или собственного плагина
add_action( 'after_setup_theme', function () {
    add_theme_support( 'title-tag' );
} );

После этого проверьте, что в header.php нет ручного блока вида <title><?php wp_title(); ?></title>. Если он есть, его нужно убрать или закомментировать.

Шаг 2. Не дублируйте description в теме и SEO-плагине

Если вы используете SEO-плагин, он должен быть единственным источником meta description. В теме не должно быть отдельной функции, которая выводит описание из excerpt, custom field или произвольной опции. Иначе на странице появятся два одинаковых или конфликтующих тега.

Если по какой-то причине вы хотите оставить описание в теме, тогда отключите соответствующий вывод в SEO-плагине. Но в реальном проекте это обычно лишняя сложность: проще выбрать один инструмент и придерживаться его.

Шаг 3. Уберите ручной вывод метатегов из header.php

Ниже пример типичного фрагмента, который лучше не держать одновременно с SEO-плагином:

<meta name="description" content="<?php echo esc_attr( get_bloginfo( 'description' ) ); ?>">
<meta property="og:title" content="<?php echo esc_attr( wp_get_document_title() ); ?>">

Если такие строки уже есть в теме, удалите их или перенесите в отдельную логику, которая не конфликтует с SEO-плагином. Для Open Graph и Twitter Cards лучше тоже использовать один источник, а не смешивать ручной код и плагины.

Шаг 4. Для точечных исключений используйте фильтры

Иногда нужно не убрать метатеги полностью, а изменить их на отдельных типах страниц. Например, на странице поиска или на архиве автора лучше не использовать один и тот же description, что и на обычных записях. В таких случаях удобнее работать через фильтры WordPress или SEO-плагина, а не править шаблон напрямую.

Пример: отключить стандартный вывод description на страницах поиска и задать свой вариант через wp_head.

add_action( 'wp_head', function () {
    if ( is_search() ) {
        echo '<meta name="description" content="Результаты поиска по сайту">' . "\n";
    }
}, 1 );

Здесь важно не забыть, что если SEO-плагин уже выводит description, этот код снова создаст дубль. Поэтому такие правки применяют только после отключения лишнего источника.

Сравнение подходов: плагин, код или правка темы

ПодходКогда подходитПлюсыМинусы
SEO-плагинНужен единый контроль title/description для всего сайтаУдобно, меньше ручного кодаНадо убрать конфликтующий код темы
Код в темеСайт без SEO-плагина или очень кастомная логикаПолный контрольЛегко сломать при обновлении темы
Дочерняя тема / мини-плагинНужно безопасно переопределять поведениеНе трогает родительскую темуТребует аккуратной настройки

Если задача только в устранении дублей, чаще всего лучший вариант — оставить SEO-плагин и удалить ручной вывод из темы. Это проще сопровождать и легче проверять после обновлений.

Проверка результата после внедрения

После правок не ограничивайтесь визуальной проверкой в браузере. Откройте исходный код страницы и убедитесь, что:

  • в документе только один <title>;
  • meta name="description" встречается один раз;
  • нет одинаковых og:title и twitter:title, если они не нужны дважды;
  • на главной, записях, рубриках и страницах поиска метатеги отличаются там, где это ожидается.

Дополнительно проверьте страницу через инструменты разработчика и валидатор исходного HTML. Если используется кэш-плагин, очистите кэш сайта и CDN, иначе вы можете смотреть старую версию шаблона.

Для быстрой технической проверки удобно использовать curl:

curl -s https://example.com/ | grep -iE '<title>|meta name="description"'

Если команда показывает один title и один description, это хороший знак. Но всё равно проверьте несколько типов страниц, потому что дубль может быть только на архиве или только на пагинации.

Частые ошибки и как их исправить

Оставили ручной title в header.php

Это самая частая причина дубля. Если в теме уже есть add_theme_support( 'title-tag' ), ручной <title> нужно удалить. Иначе WordPress выведет заголовок через wp_head, а тема — ещё один раз.

SEO-плагин и тема одновременно выводят description

Нужно оставить только один источник. Если вы не уверены, кто именно отвечает за метатеги, временно отключите SEO-плагин и сравните исходный HTML. Это быстрее, чем искать проблему в десятке файлов.

Правки внесли в родительскую тему

После обновления тема может перезаписать ваши изменения. Для таких задач лучше использовать дочернюю тему или небольшой собственный плагин. Тогда логика не исчезнет после апдейта.

Проверили только главную страницу

На практике дубли часто всплывают на архивах, страницах поиска и пагинации. Проверяйте несколько шаблонов: главную, запись, рубрику, страницу автора, поиск и страницу 2+.

Не очистили кэш

Если сайт использует page cache, object cache или CDN, старый HTML может сохраняться после правок. Очистите все уровни кэша и только потом делайте повторную проверку.

Практические советы по безопасности и производительности

Не правьте рабочую тему напрямую на боевом сайте. Для таких изменений безопаснее использовать staging-копию и только потом переносить результат. Если вносите код, держите его в дочерней теме или в отдельном мини-плагине, чтобы не потерять изменения при обновлении.

Ещё один полезный момент: не плодите несколько SEO-решений одновременно. Когда на сайте активны два плагина, которые оба считают себя ответственными за метатеги, вы получаете не только дубли, но и лишнюю нагрузку на wp_head. Это не критично само по себе, но на больших сайтах такие мелочи быстро превращаются в хаос.

Если нужен более широкий контроль над дублями, технической чисткой и SEO-ошибками, имеет смысл смотреть в сторону инструментов, которые умеют отключать лишние элементы и упрощать шаблон. Например, Clearfy Pro от WPShop можно рассматривать как вариант для задач по чистке сайта и устранению типовых дублей: https://wpshop.ru/plugins/clearfy.

Но даже с плагином принцип не меняется: сначала находите источник дубля, потом оставляете один способ генерации метатегов, а уже затем проверяете исходный HTML и индексируемые страницы.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше