Дубли title, description и canonical в WordPress обычно появляются не из-за одной ошибки, а из-за наложения нескольких источников метаданных: тема выводит свои теги, SEO-плагин добавляет свои, а где-то ещё подключён шаблонный код или кеш отдает старую версию страницы. В результате в HTML можно увидеть по два <title>, несколько meta name="description" или конфликтующие link rel="canonical".
Проблема не только в валидности разметки. Поисковик может выбрать не тот canonical, проигнорировать description или склеить страницы не так, как вы ожидаете. Ниже — рабочий порядок диагностики и исправления, который помогает не гадать, а быстро локализовать источник дубля.
Как понять, что дубли действительно есть
Сначала проверьте исходный HTML, а не визуальный вывод в браузере. Откройте страницу и посмотрите view-source: или используйте инструменты разработчика. Ищите такие признаки:
- в документе больше одного
<title>; - несколько
meta name="description"; - два и более
link rel="canonical"; - canonical указывает на URL с параметрами, хотя должна быть чистая версия;
- в коде есть теги от темы и от SEO-плагина одновременно.
Быстрая диагностика через поиск по исходнику
Если у вас есть доступ к серверу или локальной копии сайта, проще всего найти источник по шаблонам в теме и плагинах. Для WordPress это обычно header.php, файлы SEO-плагина и кастомные вставки в functions.php.
grep -Rni "rel=\"canonical\"\|name=\"description\"\|<title>" wp-content/themes wp-content/plugins
Если сайт большой, не ограничивайтесь одной страницей. Дубли часто проявляются только на отдельных типах контента: записях, рубриках, страницах автора, архиве тегов или в результатах поиска по сайту.
Откуда обычно берутся дубли
На практике источников немного, и почти всегда это один из следующих сценариев:
| Источник | Что происходит | Что делать |
|---|---|---|
| Тема | В header.php вручную добавлены title, description или canonical |
Убрать ручной вывод и оставить один источник |
| SEO-плагин | Плагин генерирует мета-теги, а тема делает то же самое | Отключить дублирующий вывод в теме или в плагине |
| Кастомный код | Функции в functions.php или mu-plugin добавляют теги через wp_head |
Найти хук и убрать лишний callback |
| Кеш | После правок в HTML остаются старые теги | Очистить кеш страницы, объекта и CDN |
Пошаговое решение без лишнего риска
Лучше идти от простого к сложному: сначала определить, кто именно выводит теги, потом убрать лишний источник, и только после этого проверять индексацию. Если сразу править canonical «на глаз», можно получить ещё больше проблем.
1. Оставьте один источник мета-тегов
Если у вас установлен SEO-плагин, он должен быть единственным источником title, description и canonical. В теме не должно быть ручного дублирования. Проверьте header.php и шаблоны, где могли остаться старые вставки.
Типичный фрагмент, который нужно убрать, если его уже заменяет SEO-плагин:
<title><?php wp_title(); ?></title>
<meta name="description" content="...">
<link rel="canonical" href="...">
В современных темах title должен формироваться через add_theme_support('title-tag'), а не вручную. Тогда WordPress и SEO-плагин не будут спорить между собой.
add_action('after_setup_theme', function () {
add_theme_support('title-tag');
});
2. Проверьте, не добавляет ли canonical ваша тема или плагин
Если canonical выводится дважды, ищите вызовы на хуке wp_head. Часто проблема сидит в самописном коде, который когда-то добавили «временно» и забыли убрать.
add_action('wp_head', function () {
if (is_singular()) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
}
}, 1);
Если SEO-плагин уже выводит canonical, этот код нужно удалить. Если вы не уверены, временно закомментируйте его и проверьте исходник страницы заново.
3. Уберите дубли в архивных и служебных страницах
На архиве рубрик, тегов, автора и на страницах пагинации часто возникают спорные canonical. Для пагинации canonical должен быть осмысленным: не всегда стоит указывать на первую страницу, если это ломает навигацию и сигналы для поисковика. Здесь важно не копировать чужую схему, а смотреть на конкретный тип страницы.
Если у вас есть кастомная генерация canonical, проверьте логику для:
- страниц
/page/2/и дальше; - страниц с параметрами фильтрации;
- поисковой выдачи по сайту;
- страниц автора и архивов без контента.
4. Очистите кеш после правок
После удаления дублей обязательно сбросьте кеш: плагин кеширования, серверный кеш, объектный кеш и CDN, если он есть. Иначе вы будете проверять старый HTML и решите, что правка не сработала.
Если используете WP-CLI и у вас есть доступ к окружению, можно очистить кеш сайта командой плагина, но конкретная команда зависит от установленного решения. Универсальный способ — очистка через интерфейс плагина и повторная проверка исходника страницы.
Когда лучше править кодом, а когда настройкой плагина
Если дубли создаёт SEO-плагин, сначала ищите настройку в самом плагине. Если дубли создаёт тема или кастомный код, править нужно в теме или в mu-plugin. Ниже — короткое сравнение подходов.
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройка SEO-плагина | Плагин уже управляет мета-тегами | Не решит проблему, если дубль идёт из темы |
| Правка темы | Тема выводит лишний HTML в header.php |
При обновлении темы правки могут потеряться |
| mu-plugin | Нужно отключить лишний хук без правки темы | Требует аккуратного тестирования |
Как проверить, что решение сработало
Проверка должна быть не только визуальной. После правок откройте исходный код страницы и убедитесь, что:
- в документе ровно один
<title>; - description выводится один раз или не выводится вовсе, если вы сознательно отказались от него на конкретном типе страниц;
- canonical один и ведёт на нужный URL без лишних параметров;
- в HTML нет старых тегов из кеша;
- на страницах пагинации canonical соответствует вашей SEO-логике.
Дополнительно проверьте несколько разных шаблонов: главную, запись, рубрику, страницу автора и архив с пагинацией. Именно там чаще всего всплывают расхождения между темой и плагином.
Частые ошибки и как их исправить
Оставили ручной title в теме и включили title-tag
Это классическая причина двойного title. Если тема уже поддерживает title-tag, ручной вывод в header.php нужно удалить. Иначе WordPress и шаблон будут конкурировать.
Отключили canonical в плагине, но забыли про тему
Иногда canonical выводится не SEO-плагином, а самописной функцией в теме. Внешне кажется, что «плагин всё ещё мешает», хотя проблема уже в другом месте. Проверяйте исходный код и поиск по проекту, а не только настройки плагина.
Проверили страницу до очистки кеша
Если на сайте есть page cache или CDN, старый HTML может жить дольше, чем вы ожидаете. Это особенно заметно после правок canonical: в браузере всё ещё старый адрес, хотя в коде уже всё исправлено на сервере.
Сломали canonical на страницах пагинации
Частая ошибка — безусловно ставить canonical на первую страницу архива. Иногда это допустимо, но не всегда. Смотрите на структуру сайта и поведение поисковой выдачи, а не копируйте универсальную схему без проверки.
Практические советы по безопасности и производительности
Если вы убираете дубли через код, не правьте напрямую файлы родительской темы. Лучше использовать дочернюю тему или mu-plugin, чтобы изменения не исчезли после обновления. Для точечных отключений удобнее mu-plugin: он загружается стабильно и не зависит от активной темы.
Ещё один полезный приём — держать SEO-логику в одном месте. Чем больше разрозненных вставок в wp_head, тем выше шанс получить конфликт после очередного обновления темы или плагина. Если на сайте уже накопились дубли, иногда проще сначала провести чистку шаблонов и служебных настроек, а потом уже настраивать мета-теги. В таких задачах помогает и аудит лишних SEO-элементов, и удаление повторяющихся блоков в теме. Если нужен инструмент для этого класса задач, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpfront.ru&utm_medium=article&utm_campaign=wordpress-duplicate-title-description-canonical.
И последнее: не меняйте canonical массово без карты URL. Сначала зафиксируйте, какие страницы должны индексироваться, какие — быть noindex, а какие — склеиваться. Иначе можно убрать дубли, но потерять нужные страницы из поиска.