Если в поиске у страниц одинаковые title и description, а canonical указывает не туда или дублируется на нескольких URL, проблема обычно не в поисковике, а в связке темы, SEO-плагина и шаблонов архива. В WordPress это встречается чаще, чем кажется: один и тот же контент доступен через категории, теги, пагинацию, параметры сортировки, страницы автора и иногда через кастомные шаблоны.
Ниже — рабочий порядок проверки и исправления. Он подходит для типичных установок WordPress, где уже стоит SEO-плагин, но мета-теги все равно конфликтуют между собой.
Как понять, что у вас именно дубли мета-тегов, а не проблема индексации
Сначала нужно отделить реальные дубли от нормального поведения поисковика. Если в HTML страницы в <head> есть два <title>, два meta name="description" или несколько link rel="canonical", это уже техническая ошибка. Если же в индексе просто много похожих URL, причина может быть в архивных страницах, параметрах и пагинации.
Что проверить в первую очередь
- исходный HTML страницы через «Просмотр кода» или
curl; - наличие второго SEO-плагина, который тоже выводит мета-теги;
- дубли в теме через
wp_headи кастомные функции; - архивы с одинаковыми шаблонами title для категорий, тегов и авторов;
- страницы с параметрами
?amp,?replytocom, сортировкой и фильтрами.
Быстрая проверка через консоль помогает увидеть проблему без браузерных расширений:
curl -sL https://example.com/page/ | grep -iE '<title>|meta name="description"|rel="canonical"'Если в ответе больше одного совпадения по каждому типу тега, дальше уже надо искать источник в коде или плагинах.
Откуда берутся дубли title, description и canonical
На практике источников обычно несколько, и они могут накладываться друг на друга. Самая частая ошибка — включить SEO-плагин и оставить в теме старый код, который тоже печатает мета-теги. Вторая типовая ситуация — шаблон архива генерирует одинаковый title для разных страниц пагинации или таксономий.
Типовые причины
- тема вручную выводит
<title>черезwp_title()или самописный шаблон; - SEO-плагин и тема одновременно выводят canonical;
- в
functions.phpесть старые фильтры наdocument_title_partsилиwpseo_title; - для архивов не настроены шаблоны title и description;
- в индексацию попадают служебные URL с параметрами.
Если у вас стоит несколько SEO-решений одновременно, сначала оставьте одно. Иначе вы будете чинить не причину, а симптомы.
Пошаговое решение: убираем источник дублей
Оптимальный порядок такой: сначала отключить лишний вывод в теме, затем проверить SEO-плагин, потом добить кастомные фильтры и только после этого смотреть на шаблоны архивов.
1. Уберите ручной вывод title из темы
В современных темах WordPress title должен формироваться через поддержку title-tag. Если в header.php или другом шаблоне есть жестко прописанный <title>, его нужно убрать.
// functions.php темы или дочерней темы
add_action('after_setup_theme', function () {
add_theme_support('title-tag');
});Если тема старая и использует wp_title(), это почти всегда кандидат на доработку. Вручную выводить title в 2026 году — плохая идея, особенно если на сайте уже есть SEO-плагин.
2. Проверьте, кто выводит canonical
Canonical должен приходить из одного источника. Если SEO-плагин уже его формирует, не добавляйте второй через тему или кастомный хук. Для проверки найдите в коде проекта все упоминания rel="canonical" и wp_get_canonical_url.
Пример корректного добавления canonical только для особого случая, когда нужно переопределить URL на конкретной странице:
add_filter('wpseo_canonical', function ($canonical) {
if (is_page(42)) {
return home_url('/landing/');
}
return $canonical;
});Этот пример уместен только если у вас действительно есть причина менять canonical. Если причины нет, фильтр не нужен.
3. Настройте шаблоны title и description для архивов
Для категорий, тегов и других архивов title не должен быть одинаковым. Если SEO-плагин позволяет шаблоны, используйте переменные так, чтобы каждая сущность получала свой заголовок. Для WordPress-архивов это особенно важно на больших сайтах с похожими рубриками.
Если нужен кастомный вариант без плагина, можно задать title через фильтр:
add_filter('document_title_parts', function ($parts) {
if (is_category()) {
$term = get_queried_object();
if ($term && !is_wp_error($term)) {
$parts['title'] = single_cat_title('', false) . ' — статьи и материалы';
}
}
return $parts;
});Такой подход не решает все SEO-задачи, но помогает убрать одинаковые title на категориях, если тема их генерирует слишком однообразно.
4. Исключите дубли от параметров и служебных URL
Если на сайте есть URL с параметрами сортировки, фильтров или служебных переходов, canonical должен указывать на чистую основную страницу. Для этого важно не плодить отдельные шаблоны под каждый параметр без необходимости.
На уровне сервера и темы полезно проверить, не создаются ли отдельные версии страниц для:
?replytocom;?utm_*;?sort=и других параметров фильтрации;- страниц пагинации с одинаковым title;
- страниц автора, если они не нужны в индексе.
Сравнение подходов: плагин, код или правка темы
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если нужен быстрый контроль title, description и canonical | Удобно управлять шаблонами, меньше ручного кода | Конфликтует с темой, если там уже есть свой вывод |
| Код в теме/дочерней теме | Если нужна точечная правка на одном сайте | Гибко, можно решить локальную проблему | Легко сломать при обновлении темы |
| Комбинация с аудитом шаблонов | Если дубли идут из нескольких источников | Самый надежный вариант | Требует времени и проверки кода |
Как проверить, что исправление сработало
После правок не ограничивайтесь визуальной проверкой в браузере. Нужно посмотреть именно HTML и убедиться, что в <head> остался один набор мета-тегов.
Чек-лист проверки
- на странице есть один
<title>; - есть один
meta name="description"; - canonical выводится один раз;
- title отличается у категорий, тегов и записей;
- страницы пагинации не дублируют title первой страницы;
- служебные URL не создают отдельные индексируемые копии.
Проверить canonical и title можно и через PHP, если нужен быстрый локальный тест:
add_action('wp_head', function () {
if (current_user_can('manage_options')) {
echo "\n<!-- debug: " . esc_html(get_permalink()) . " -->\n";
}
}, 99);Это не решение для продакшена, а временная диагностика. После проверки такой код нужно удалить.
Частые ошибки и как их исправить
Оставили два SEO-источника одновременно
Например, SEO-плагин уже выводит canonical, а тема добавляет свой через wp_head. В итоге поисковик видит конфликтующие сигналы. Исправление простое: оставить один источник и удалить второй.
Использовали фильтр не по назначению
Иногда пытаются через pre_get_document_title или document_title_parts решить все сразу. Но если проблема в шаблоне темы, фильтр только замаскирует симптом. Сначала уберите ручной вывод в шаблоне, потом уже настраивайте фильтры.
Сломали canonical на пагинации
Частая ошибка — принудительно ставить canonical на первую страницу архива для всех страниц пагинации. Это не всегда корректно. Если пагинация нужна для индексации, canonical должен соответствовать текущей странице, а не всегда первой.
Сделали одинаковые description для всех архивов
Автоматический шаблон description без учета таксономии часто приводит к дублям. Лучше задать шаблон с переменными или вообще убрать description там, где он не несет пользы, чем плодить одинаковый текст.
Практические советы по безопасности и производительности
Любая правка мета-тегов должна идти через дочернюю тему или собственный мини-плагин, а не прямо в файлы родительской темы. Иначе обновление все затрет. Если правок много, вынесите их в отдельный mu-plugin или небольшой кастомный плагин проекта.
Не ставьте несколько SEO-плагинов ради одной функции. Это лишняя нагрузка и источник конфликтов. Если нужен более широкий набор инструментов для чистки дублей, служебных страниц и технической оптимизации, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpmentor.ru&utm_medium=article&utm_campaign=wordpress-duplicate-title-description-canonical-fix. Но и в этом случае сначала проверьте, не дублирует ли его функции уже установленный SEO-плагин.
Для больших сайтов полезно периодически прогонять выборочную проверку HTML по ключевым типам страниц: главная, запись, категория, тег, автор, пагинация. Это быстрее, чем ждать, пока дубли всплывут в отчете поисковой системы.
Если после всех правок дубли остаются, ищите их не в SEO-настройках, а в шаблонах темы и подключаемых плагинах. В WordPress именно там обычно прячется реальная причина.