Если в поисковой консоли всплывают дубли title и description, проблема почти всегда не в одном месте, а в связке: тема, SEO-плагин, архивы, пагинация, шаблоны записей и иногда — фильтры, которые подменяют метатеги на лету. В WordPress это типичный сценарий: на одной и той же странице метатег формируется дважды, либо разные URL отдают одинаковый набор метаданных.
Ниже разберём, как быстро найти источник дублей, что отключать в первую очередь и как проверить, что после правки поисковый робот видит уже один корректный вариант.
Как понять, что дубли идут именно из WordPress
Сначала не трогайте код. Снимите факты: откройте проблемную страницу и посмотрите исходный HTML. Если в <head> есть два тега <title> или два одинаковых <meta name="description">, это уже не вопрос индексации, а вопрос генерации шаблона.
Параллельно проверьте несколько типовых URL:
- главная страница;
- запись;
- страница рубрики;
- страница пагинации
/page/2/; - страница с параметрами, если они индексируются.
Если одинаковые метатеги повторяются на разных URL, ищите не только дубли в HTML, но и одинаковые шаблоны для архивов, таксономий и пагинации.
Что обычно вызывает проблему
На практике источников несколько:
- тема вручную выводит
<title>иmeta description, а SEO-плагин делает то же самое; - в шаблоне подключён старый код из
header.phpилиfunctions.php; - для архивов не настроены отдельные шаблоны title/description;
- страницы пагинации и фильтров получают тот же description, что и первая страница;
- кеш отдаёт старую версию head после правок.
Диагностика: где искать дубли в теме и плагинах
Если у вас есть доступ к файлам, начните с поиска по проекту. Ищите не только слово description, но и прямой вывод <title>, а также функции SEO-плагинов, если они подключались вручную.
grep -Rni --exclude-dir=node_modules --exclude-dir=vendor "<title>\|meta name=\"description\"\|wp_head\|document_title" wp-content/themes wp-content/pluginsЧто важно проверить в результате:
- в
header.phpнет ли ручного<title>; - не подключён ли старый SEO-код из дочерней темы;
- не выводит ли тема description через
wp_head; - не дублирует ли SEO-плагин уже существующую разметку.
Если у вас установлен SEO-плагин, посмотрите его настройки для шаблонов title и description. Частая ошибка — оставить в теме старый вывод метатегов и одновременно включить генерацию в плагине.
Пошаговое решение без лишнего риска
Самый безопасный путь — оставить один источник правды для метатегов. Обычно это SEO-плагин или код в теме, но не оба варианта сразу.
Шаг 1. Уберите ручной вывод title из темы
В современных темах title должен формироваться через add_theme_support( 'title-tag' ), а не через ручной тег в header.php. Если в теме уже есть <title>, удалите его и включите поддержку документа в functions.php.
add_action( 'after_setup_theme', function () {
add_theme_support( 'title-tag' );
} );После этого WordPress сам отдаст корректный <title> через wp_head. Если SEO-плагин тоже управляет title, не добавляйте второй источник.
Шаг 2. Не выводите description вручную, если его уже генерирует плагин
Если в теме есть кастомный код вида <meta name="description">, его лучше убрать. Для большинства сайтов description должен формироваться либо SEO-плагином, либо через фильтр, но не через прямую вставку в шаблон.
Если нужен собственный шаблон description без плагина, используйте фильтр wp_head аккуратно и только один раз:
add_action( 'wp_head', function () {
if ( is_singular() ) {
$post_id = get_queried_object_id();
$excerpt = get_the_excerpt( $post_id );
if ( $excerpt ) {
echo '<meta name="description" content="' . esc_attr( wp_strip_all_tags( $excerpt ) ) . '">' . "\n";
}
}
}, 1 );Здесь важен приоритет 1: если позже в wp_head отработает SEO-плагин, вы снова получите дубль. Поэтому либо отключайте его вывод description, либо не добавляйте свой.
Шаг 3. Настройте шаблоны для архивов и пагинации
Для рубрик и архивов одинаковый description на всех страницах пагинации — частая причина дублей. Страница /category/news/ и /category/news/page/2/ не должны иметь один и тот же метатег, если обе индексируются.
Если вы пишете логику сами, разделяйте первую страницу и пагинацию:
add_action( 'wp_head', function () {
if ( is_category() && ! is_paged() ) {
$term = get_queried_object();
if ( ! empty( $term->description ) ) {
echo '<meta name="description" content="' . esc_attr( wp_strip_all_tags( $term->description ) ) . '">' . "\n";
}
}
}, 5 );Для страниц пагинации обычно лучше не дублировать description вообще, а дать поисковику понять, что это продолжение списка, а не отдельная посадочная страница.
Сравнение подходов: плагин, код или гибрид
| Подход | Когда подходит | Минус |
|---|---|---|
| Только SEO-плагин | Если нужен единый интерфейс и нет кастомной логики | Легко получить конфликт с темой, если старый код не удалён |
| Только код в теме | Если сайт небольшой и шаблоны простые | Сложнее поддерживать, особенно для архивов и таксономий |
| Гибрид с чётким разделением | Если часть метатегов ведёт плагин, а часть — тема | Нужно жёстко следить, чтобы не было двух источников одного тега |
На практике для большинства проектов удобнее оставить SEO-плагин как основной источник, а в теме убрать весь ручной вывод метатегов. Если нужен аудит дублей, уместно использовать инструменты вроде Clearfy Pro для чистки лишних элементов и контроля SEO-дублей, но только после проверки, что тема не дублирует разметку сама.
Как проверить, что решение сработало
После правок не ограничивайтесь визуальной проверкой страницы в браузере. Нужны три проверки:
- Откройте исходный код страницы и убедитесь, что
<title>один. - Проверьте, что
meta descriptionтоже один и соответствует шаблону. - Прогоните URL через инструменты проверки в Search Console или через просмотр HTML-ответа, если у вас есть доступ к логам и кэшу.
Если сайт использует кеширование, очистите не только страницу, но и серверный кеш, объектный кеш и CDN. Иначе вы будете смотреть на старую версию head и решите, что правка не сработала.
Полезно дополнительно проверить ответ сервера командой:
curl -s https://example.com/page/ | grep -iE '<title>|meta name="description"'Если в ответе виден только один title и один description, значит проблема уже не в генерации HTML. Тогда смотрите каноникал, robots и параметры индексации.
Частые ошибки и как их исправить
Оставили старый код в дочерней теме
Даже если вы обновили родительскую тему, дочерняя может продолжать выводить старый meta description. Ищите код именно в активной теме, а не только в основной.
Отключили плагин, но не убрали его фильтры
Иногда плагин деактивирован, а его код остался в functions.php или в mu-plugins. В результате дубли продолжают появляться, хотя интерфейс плагина уже не виден.
Проверяли страницу без очистки кеша
Это одна из самых частых причин ложных выводов. После изменения wp_head очищайте кеш на всех уровнях, иначе старый head будет жить ещё какое-то время.
Сделали одинаковый description для всех архивов
Для рубрик, тегов и пагинации нужен разный подход. Если description одинаковый на десятках URL, поисковик может считать такие страницы малоценными или дублирующими друг друга.
Практические советы по безопасности и производительности
Не вставляйте генерацию метатегов через случайные сниппеты из интернета без проверки приоритетов хуков. В WordPress один и тот же тег может появиться дважды просто потому, что код подключён в двух местах: в теме и в плагине.
Если пишете собственную логику, держите её минимальной:
- не делайте тяжёлые запросы к базе в
wp_head; - не собирайте description через сложные циклы по постам;
- не выводите метатеги из AJAX или JS, если речь о SEO;
- не смешивайте генерацию title и description в разных слоях проекта без документации.
Для больших сайтов лучше заранее описать правило: кто отвечает за title, кто — за description, кто — за canonical и кто — за noindex на архивных страницах. Это экономит время при следующем редизайне и снижает риск повторного появления дублей.
Если нужно быстро навести порядок в SEO-дублях и лишних элементах head, можно рассмотреть специализированные инструменты вроде Clearfy Pro: он полезен именно как слой для чистки и отключения лишнего, но не заменяет проверку темы и шаблонов. Ссылку на продукт имеет смысл добавлять только если вы действительно используете его в проекте.
Когда источник дублей найден и убран, не останавливайтесь на одной странице. Пройдитесь по типовым шаблонам: главная, записи, рубрики, теги, архивы автора и пагинация. В WordPress дубли метатегов обычно возвращаются не из-за одной ошибки, а из-за незакрытого шаблона, который потом копируется в новые разделы сайта.