Дубли метаданных в WordPress обычно всплывают не сразу. Сайт может нормально открываться, но в коде страницы одновременно оказываются два <title>, несколько meta name="description" или конфликтующие link rel="canonical". Для поисковика это не косметика: он получает противоречивые сигналы и начинает выбирать версию страницы сам.
Чаще всего проблема появляется после установки SEO-плагина, обновления темы, подключения конструктора или ручной правки header.php. Ниже — рабочий порядок проверки и исправления, без лишних действий и без «на всякий случай отключить всё подряд».
Когда дубли метаданных действительно мешают
Не каждый повтор в коде критичен, но есть несколько сценариев, где проблему нужно чинить сразу:
- в HTML есть два разных
title— один от темы, второй от SEO-плагина; - на странице выводятся две версии
descriptionиз-за параллельной работы темы и плагина; canonicalуказывает на одну URL, аog:urlили разметка темы — на другую;- для записей, страниц и архивов используются разные шаблоны, и в одном из них метатеги добавляются вручную;
- после миграции сайта старый код в
functions.phpпродолжает печатать мета-теги, хотя SEO-плагин уже делает это сам.
Если у вас уже есть статья про закрытие дублей страниц от индексации, это другая задача. Здесь речь именно о дублях метаданных в исходном коде и о том, кто их генерирует.
Диагностика: где искать источник дублей
Начинать нужно не с правки кода, а с проверки исходника страницы. Откройте проблемную страницу и посмотрите HTML через «Просмотр кода страницы» или DevTools. Ищите:
<title>— должен быть один;meta name="description"— обычно один;link rel="canonical"— один;meta property="og:title",og:description,og:url— без конфликтов с основными метаданными;- повторяющиеся блоки из темы и SEO-плагина, например одинаковые теги, но с разными значениями.
Полезно проверить не только главную, но и один пост, одну страницу и один архив. Часто проблема проявляется только в конкретном шаблоне.
Что смотреть в первую очередь
Если у вас стоит SEO-плагин, а в коде всё равно есть второй набор метатегов, почти всегда виноваты:
header.phpтемы;- кастомный код в
functions.phpдочерней темы; - плагин, который добавляет Open Graph и Twitter Cards отдельно;
- конструктор или тема с собственным SEO-модулем.
Проверка через поиск по файлам обычно быстрее, чем гадать по интерфейсу админки. Ищите в теме и плагинах строки wp_head, wp_title, pre_get_document_title, meta name="description", rel="canonical".
Как убрать дубли: рабочая схема
Правильный подход такой: сначала оставляем один источник метаданных, потом отключаем остальные. Не наоборот.
Шаг 1. Определите главный источник
Если вы используете SEO-плагин, он должен быть единственным источником для title, description и canonical. Тема в этом случае не должна печатать эти же теги вручную. Если SEO-плагина нет, метатеги можно генерировать кодом темы, но тогда это должен быть один аккуратный механизм, а не набор разрозненных вставок.
Шаг 2. Уберите ручную генерацию из темы
Проверьте header.php и functions.php. Если там есть что-то вроде этого, это частая причина дублей:
<title><?php bloginfo('name'); ?></title>В современных темах WordPress заголовок страницы должен формироваться через поддержку title-tag, а не вручную. Если тема старого образца, лучше перевести её на стандартный механизм, чем поддерживать собственный.
В functions.php проверьте, нет ли старых фильтров, которые добавляют title или description поверх SEO-плагина:
add_filter('pre_get_document_title', function ($title) {
return $title . ' | Мой сайт';
});Такой код может быть уместен только если вы точно понимаете, как он сочетается с SEO-плагином. В большинстве случаев он и создаёт конфликт.
Шаг 3. Оставьте один canonical
Если canonical выводится дважды, поисковик может проигнорировать оба. Проверьте, не печатает ли его тема в wp_head и не делает ли это SEO-плагин одновременно. Вручную canonical имеет смысл только в редких шаблонах, например на страницах с фильтрами или нестандартной пагинацией.
Шаг 4. Проверьте Open Graph и Twitter Cards
Иногда кажется, что дубли только в SEO-метатегах, но на деле конфликт идёт через соцсети. Например, тема выводит og:title и og:description, а плагин — свои версии. Это не всегда ломает индексацию, но создаёт шум в коде и может давать разные превью в соцсетях.
| Подход | Плюсы | Минусы |
|---|---|---|
| Оставить SEO-плагин как единственный источник | Предсказуемо, удобно для контентной команды | Нужно убрать старый код из темы |
| Генерировать метатеги кодом темы | Меньше зависимостей от плагинов | Сложнее поддержка, выше риск дублей |
| Смешанный вариант | Быстро на этапе миграции | Часто приводит к конфликтам и повторным правкам |
Пример: как отключить ручной title в теме
Если тема выводит title вручную, сначала проверьте, есть ли в functions.php поддержка документа через add_theme_support('title-tag'). Если нет — добавьте её и уберите ручной тег из header.php.
// functions.php
add_action('after_setup_theme', function () {
add_theme_support('title-tag');
});После этого в header.php не должно быть собственного <title>. Заголовок будет формироваться через ядро WordPress и совместимый SEO-плагин.
Если у вас уже есть SEO-плагин, не пытайтесь дублировать его логику через wp_title или похожие старые фильтры. Это типичная причина, почему на сайте появляются два разных title в одном документе.
Как проверить, что исправление сработало
После правок не ограничивайтесь визуальной проверкой в браузере. Смотрите именно исходный HTML:
- Откройте страницу в режиме просмотра кода.
- Найдите
<title>и убедитесь, что он один. - Проверьте, что
meta name="description"не повторяется. - Проверьте, что
link rel="canonical"один и ведёт на нужный URL. - Сравните страницу с тем, что показывает SEO-плагин в предпросмотре сниппета.
Если используете Search Console, после исправления стоит отправить страницу на переобход. Но сначала убедитесь, что в коде реально исчезли дубли, а не только «стали незаметны» в интерфейсе плагина.
Мини-чек-лист перед публикацией
- в теме нет ручного
<title>; - SEO-плагин не дублируется собственным кодом темы;
canonicalвыводится один раз;- Open Graph не печатается двумя разными источниками;
- после очистки кеша исходник страницы проверен заново.
Частые ошибки и как их исправить
Ошибка 1: удалили не тот код. Часто убирают метатеги из дочерней темы, а дубли остаются в родительской теме или в плагине. Решение простое: искать по всему проекту, а не только в активной теме.
Ошибка 2: отключили SEO-плагин целиком. Это слишком грубо. В результате можно потерять не только дубли, но и нормальные canonical, robots и соцметки. Лучше отключать только конфликтующий модуль или убрать ручную генерацию из темы.
Ошибка 3: правят только главную страницу. На главной всё может выглядеть нормально, а на записях и архивах дубли останутся. Проверяйте несколько шаблонов.
Ошибка 4: забыли про кеш. После правок старый HTML может продолжать отдаваться из кеша плагина, сервера или CDN. Очистка кеша обязательна, иначе вы будете проверять старую версию страницы.
Ошибка 5: смешали SEO и Open Graph без контроля. Если один плагин отвечает за SEO, а другой — за соцсети, заранее проверьте, не печатают ли они одинаковые поля. Иначе дубли будут не только в метатегах, но и в превью ссылок.
Что делать, если дубли появляются после обновления темы или плагина
Это частый сценарий: раньше всё было чисто, потом обновили тему, и в коде появился второй набор метаданных. В таком случае сначала сравните изменения в шаблонах. Если тема обновляемая, не вносите правки в родительские файлы — используйте дочернюю тему или отдельный плагин для кастомного кода.
Для нестандартных правок лучше вынести логику в небольшой mu-plugin или в собственный плагин сайта. Тогда обновление темы не вернёт старый конфликт обратно.
Если нужен более системный способ чистить лишние SEO-элементы и дубли в WordPress, можно посмотреть на Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином важно понимать, какой именно источник метаданных вы отключаете, иначе проблема просто переедет в другой шаблон.
Практика безопасности и поддержки
Не редактируйте родительскую тему напрямую, если сайт живой и обновляется. Для таких задач безопаснее:
- дочерняя тема для шаблонов;
- mu-plugin для точечных фильтров;
- отдельный плагин для кода, который должен переживать обновления темы.
Перед изменениями сделайте бэкап файлов и базы. Если сайт на продакшене, сначала проверьте правки на staging-копии. Для метатегов это особенно важно: ошибка не ломает фронтально сайт, но может незаметно испортить индексацию.
Если после чистки дублей вы видите, что часть страниц всё ещё отдаёт старые метатеги, проверьте не только WordPress, но и кеш на уровне сервера, CDN и браузера. В таких задачах именно кеш чаще всего маскирует результат и создаёт ложное ощущение, что правка не сработала.