Дубли метаданных в WordPress обычно всплывают не сразу: сайт открывается, страницы индексируются, но в Search Console появляются одинаковые title и description, а иногда еще и конфликтующие canonical. На небольшом сайте это выглядит как косметическая проблема, но на практике такие дубли мешают поисковику понять, какая версия страницы основная.
Чаще всего источник один из трех: тема выводит мета-теги сама, SEO-плагин подключен частично, либо в шаблонах остались старые вставки из header.php и кастомных полей. Ниже — как быстро диагностировать именно ваш случай и убрать дубли без лишних правок.
Где искать дубли и почему они появляются
Перед правкой кода нужно понять, кто именно печатает метаданные. В WordPress это может быть тема, SEO-плагин, кастомный код в functions.php или отдельный плагин для микроразметки. Если на странице одновременно есть два <title>, два meta name="description" или несколько rel="canonical", поисковик обычно берет не то, что вы ожидаете.
Типовые источники проблемы
- в
header.phpвручную добавлен<title>, хотя тема уже поддерживаетadd_theme_support('title-tag'); - SEO-плагин генерирует canonical, а тема добавляет свой через
wp_head; - на архивных страницах и таксономиях description собирается из нескольких фильтров;
- в шаблонах записей остались старые мета-блоки от предыдущей темы;
- один и тот же код подключен и в дочерней теме, и через mu-plugin.
Диагностика: как понять, что именно дублируется
Сначала проверьте исходный HTML страницы. Не визуальный просмотр в браузере, а именно код страницы. Это самый быстрый способ увидеть повторяющиеся теги и понять, откуда они идут.
<!-- пример проверки через командную строку -->
curl -s https://example.com/stranica/ | grep -Ei '<title>|meta name="description"|rel="canonical"'Если у вас есть доступ к серверу, можно посмотреть и шаблонные файлы темы. Ищите прямые вставки <title>, meta name="description", rel="canonical", а также хук wp_head с анонимными функциями.
В админке полезно открыть страницу в режиме просмотра исходника и сравнить, сколько раз встречается каждый тег. Если title один, а description два — проблема не в теме целиком, а в конкретном шаблоне или плагине.
Пошаговое решение без лишнего риска
Ниже рабочая схема, которая подходит для большинства сайтов. Сначала убираем явные дубли, потом оставляем один источник генерации метаданных.
Шаг 1. Оставьте один способ генерации title
Если тема поддерживает title-tag, не выводите <title> вручную в header.php. В современной теме это должен делать WordPress.
// functions.php дочерней темы или кастомный плагин
add_action('after_setup_theme', function () {
add_theme_support('title-tag');
});Если в header.php есть ручной <title>, удалите его. Иначе получите либо дубль, либо конфликт с тем, что формирует ядро и SEO-плагин.
Шаг 2. Уберите повторяющийся canonical
Если canonical выводится и темой, и плагином, оставьте только один источник. В большинстве случаев правильнее оставить canonical SEO-плагина, а кастомный код удалить.
// пример: отключаем собственный canonical, если он был добавлен в теме
remove_action('wp_head', 'mytheme_canonical_tag');Если функция называлась иначе, найдите ее по строке canonical в теме и удалите соответствующий add_action или сам вывод в шаблоне.
Шаг 3. Сделайте description только из одного фильтра
Для description частая ошибка — собирать его в нескольких местах: в шаблоне, в SEO-плагине и в отдельном фильтре. Если у вас уже есть SEO-плагин, не дублируйте его логику собственным <meta name="description">.
Если нужен свой вариант только для части страниц, используйте условие и не печатайте тег на всех шаблонах подряд.
add_action('wp_head', function () {
if (!is_singular('post')) {
return;
}
if (function_exists('get_post_meta')) {
$description = get_post_meta(get_the_ID(), '_custom_meta_description', true);
if ($description) {
echo '<meta name="description" content="' . esc_attr(wp_strip_all_tags($description)) . '">' . "\n";
}
}
}, 1);Обратите внимание на приоритет 1: если SEO-плагин тоже печатает description через wp_head, лучше не добавлять свой код без необходимости. В идеале источник должен быть один.
Сравнение подходов: плагин, код или ручная правка
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если нужен единый контроль метаданных | Меньше ручного кода, проще поддержка | Нужно следить, чтобы тема не дублировала вывод |
| Код в дочерней теме | Если проблема точечная и понятная | Точный контроль, без лишних зависимостей | Легко сломать при обновлении, если править родительскую тему |
| Ручная правка шаблонов | Если сайт небольшой и шаблонов мало | Быстро убрать явный дубль | Сложнее сопровождать, выше риск пропустить другой шаблон |
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Проверьте именно HTML и индексируемую версию.
- откройте исходный код страницы и убедитесь, что
<title>один; - проверьте, что
meta name="description"не повторяется; - убедитесь, что canonical присутствует только один раз;
- посмотрите, не выводит ли тема лишние мета-теги на архиве, категории и страницах пагинации;
- в Google Search Console проверьте, как поисковик видит заголовок и сниппет после переобхода.
Если у вас включен кэш страницы, очистите его перед проверкой. Иначе вы можете смотреть старую версию HTML и решить, что исправление не сработало.
Частые ошибки и как их исправить
Оставили ручной title в header.php
Это самая частая причина дубля. Решение простое: удалить ручной тег и включить add_theme_support('title-tag'), если тема его еще не использует.
Поставили SEO-плагин, но не отключили старый код
Плагин и кастомный код часто генерируют одинаковые мета-теги. Если плагин уже отвечает за title, description и canonical, уберите старые вставки из темы и дочерней темы.
Проверили только главную страницу
На главной все может быть чисто, а на категориях, тегах и страницах автора — дубли. Проверяйте минимум один одиночный пост, архив рубрики и страницу пагинации.
Сломали вывод после удаления функции
Если мета-тег выводился через хук, не удаляйте весь wp_head. Ищите конкретную функцию, которая добавляла тег, и убирайте только ее. Иначе можно потерять стили, скрипты и другие важные элементы.
Практические советы по безопасности и поддержке
Не вносите правки прямо в родительскую тему. Для таких задач лучше использовать дочернюю тему или небольшой mu-plugin. Тогда обновление темы не вернет дубли обратно.
Если код отвечает только за одну проблему, держите его коротким и документируйте, что именно он отключает. Через полгода легче удалить один понятный фрагмент, чем разбираться в наборе анонимных функций без комментариев.
Для сайтов с большим количеством шаблонов полезно один раз пройтись по всем типам страниц: записи, страницы, архивы, поиск, пагинация, пользовательские таксономии. Дубли метаданных часто сидят именно там, где их редко проверяют вручную.
Если нужен более широкий аудит дублей и технической чистки, часть задач можно закрыть инструментами вроде Clearfy Pro: он помогает убрать лишние элементы и сократить ручную работу, но логику генерации метаданных все равно стоит понимать и проверять самостоятельно.