Как отключить дубли meta robots и canonical в WordPress без поломки SEO

Если в исходном коде страницы одновременно появляются два rel="canonical" или несколько тегов meta name="robots", это почти всегда следствие конфликта между темой, SEO-плагином и кастомным кодом. На практике проблема всплывает после установки нового плагина, обновления темы или переноса сайта с одной SEO-настройки на другую.

Симптомы обычно неочевидные: Google выбирает не тот canonical, страницы выпадают из индекса, в Search Console появляются сообщения о дублирующихся метатегах, а в HTML-коде видно, что один и тот же тег выводится дважды. Ниже — рабочая схема, как найти источник, убрать конфликт и проверить, что всё стало нормально.

Как понять, что проблема именно в дублях canonical и robots

Сначала не трогайте код. Сначала проверьте, действительно ли дубли есть и где они появляются. Откройте проблемную страницу в браузере, посмотрите исходный код и найдите:

  • <link rel="canonical" ...> — должен быть один;
  • <meta name="robots" ...> — тоже обычно один, если вы не используете отдельные блоки для AMP или спецразметки;
  • дубли в <head> от темы и SEO-плагина одновременно;
  • разные значения canonical на одной и той же странице.

Если у вас есть доступ к серверным логам или к инструментам вроде View Source, сравните не только главную, но и записи, страницы, архивы, пагинацию и страницы с параметрами. Часто конфликт проявляется только на одном типе шаблона.

Что обычно вызывает конфликт

Чаще всего источник один из трёх:

  • тема выводит canonical вручную через wp_head;
  • SEO-плагин уже добавляет canonical и robots автоматически;
  • кастомный код в functions.php или в mu-plugin дублирует вывод.

Если сайт недавно чистили от лишних функций, проверьте, не остался ли старый код после миграции. Особенно часто это бывает, когда в теме есть старые SEO-функции, а поверх них поставили отдельный SEO-плагин.

Пошаговое решение: найти источник и убрать лишний вывод

Работать лучше по цепочке: сначала отключить лишний вывод в теме, потом проверить SEO-плагин, потом найти кастомные хуки. Так проще не сломать то, что уже работает.

Шаг 1. Проверьте тему

Откройте functions.php, шаблон header.php и любые файлы, где есть add_action('wp_head', ...). Ищите прямой вывод canonical или robots. Пример плохой практики:

<?php
add_action('wp_head', function () {
    echo '<link rel="canonical" href="' . esc_url( home_url( add_query_arg( array(), $GLOBALS['wp']->request ) ) ) . '" />' . "\n";
});

Если SEO-плагин уже делает это сам, такой код нужно убрать. В теме не должно быть собственного canonical, если вы не понимаете, зачем он нужен именно здесь.

Шаг 2. Найдите дубли в SEO-плагине

Если используется Yoast SEO, Rank Math, All in One SEO или другой похожий плагин, проверьте настройки canonical и robots. Иногда дубли появляются не из-за самого плагина, а из-за второго SEO-расширения или старого сниппета, который остался в коде.

Если вы не уверены, временно отключите только SEO-плагин на тестовой копии сайта и посмотрите исходный код. Если дубли исчезли, источник найден. Если нет — проблема в теме или кастомном коде.

Шаг 3. Уберите лишний вывод через хук

Если canonical выводится не тем местом, где нужно, его можно отключить точечно. Для WordPress это безопаснее, чем править шаблоны вручную, если вы знаете, какой именно хук срабатывает.

Например, если тема добавляет свой canonical через wp_head, можно снять этот callback, если он зарегистрирован с именем функции:

<?php
add_action('after_setup_theme', function () {
    remove_action('wp_head', 'theme_custom_canonical_output');
});

Но здесь важно понимать: remove_action() сработает только если вы знаете точное имя функции и приоритет. Если код анонимный, удалить его таким способом нельзя. Тогда проще убрать сам блок из темы или вынести логику в дочернюю тему.

Шаг 4. Для robots используйте один источник правды

Тег meta robots должен формироваться в одном месте. Если у вас есть правила noindex для архивов, пагинации или служебных страниц, задавайте их через SEO-плагин или через один аккуратный фильтр, а не через несколько разрозненных вставок.

Пример, как задать noindex для служебных страниц в собственном коде, если у вас нет SEO-плагина или вы точно понимаете, что делаете:

<?php
add_filter('wp_robots', function (array $robots) {
    if (is_search() || is_404()) {
        $robots['noindex'] = true;
        $robots['nofollow'] = true;
    }

    return $robots;
});

Этот подход лучше, чем вручную печатать <meta name="robots"> в шаблоне. WordPress сам соберёт корректный тег, а вы не получите второй экземпляр из плагина.

Когда лучше править код, а когда — настройки плагина

Если задача простая, например убрать canonical с одной служебной страницы, удобнее использовать фильтр. Если проблема системная и касается всего сайта, лучше привести к одному стандарту настройки SEO-плагина и удалить лишний код из темы.

ПодходКогда подходитМинус
Настройки SEO-плагинаНужно управлять индексацией всего сайтаЗависимость от плагина
Код в дочерней темеНужно точечно изменить поведениеТребует аккуратной поддержки
Удаление старого кода из темыЕсть явный дублирующий выводНужно не сломать другие шаблоны

Если на сайте уже есть много технических дублей, иногда проще сначала навести порядок через плагин для чистки SEO-настроек. В экосистеме WPShop для этого есть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае важно понимать, какой именно источник вы отключаете, иначе можно убрать не тот тег.

Проверка результата после внедрения

После правок не ограничивайтесь визуальной проверкой в браузере. Нужна проверка на уровне HTML и индексации.

  • Откройте исходный код страницы и убедитесь, что canonical один.
  • Проверьте, что meta robots не дублируется.
  • Сравните canonical на страницах с пагинацией и параметрами URL.
  • Проверьте страницу в Google Search Console через проверку URL.
  • Убедитесь, что noindex не проставился там, где он не нужен.

Если у вас есть доступ к командной строке, можно быстро проверить HTML через curl и поискать теги вручную:

curl -s https://example.com/page/ | grep -iE 'canonical|meta name="robots"'

Если вывод показывает два canonical или несколько robots, значит проблема ещё не решена. Если тег один, но canonical указывает не на ту страницу, проверьте, не переписывает ли его SEO-плагин на уровне фильтра.

Частые ошибки и как их исправить

Остался старый код в дочерней теме

После смены темы часто забывают, что canonical или robots были добавлены не в родительскую тему, а в дочернюю. Проверьте оба места. Если код дублируется, удаляйте его из одного источника, а не маскируйте дополнительным фильтром.

Отключили не тот хук

Иногда пытаются убрать вывод через remove_action(), но не совпадает приоритет или имя функции. В результате код остаётся на месте, а кажется, что всё уже исправлено. В таких случаях проще найти конкретную функцию в теме и удалить её напрямую.

Смешали SEO-плагин и ручную разметку

Если плагин уже управляет canonical и robots, не дублируйте это вручную в шаблоне. Ручной вывод нужен только тогда, когда вы сознательно отказались от плагина и берёте ответственность за всю SEO-логику на себя.

Проверили только главную страницу

На главной всё может быть чисто, а на архиве автора, странице поиска или пагинации дубли уже есть. Проверяйте именно те шаблоны, которые индексируются и могут создавать мусор в выдаче.

Практические советы по безопасности и производительности

Не правьте рабочий сайт напрямую, если проблема затрагивает SEO-метки. Лучше сначала сделать копию или хотя бы сохранить текущие файлы темы. Один лишний символ в wp_head может сломать весь блок <head>.

Если вы вносите изменения через код, держите их в дочерней теме или в отдельном mu-plugin. Так обновление темы не вернёт старый дублирующий canonical обратно. И не добавляйте несколько SEO-решений одновременно: это не ускоряет сайт, а только усложняет диагностику.

Если на сайте уже накопилось много лишних тегов, скриптов и SEO-дублей, сначала наведите порядок в технической базе, а потом уже меняйте шаблоны. В противном случае вы будете чинить один и тот же конфликт после каждого обновления.

Короткий чек-лист перед публикацией

  • В исходном коде страницы только один canonical.
  • meta robots выводится из одного источника.
  • Нет старого SEO-кода в теме и дочерней теме.
  • Проверены записи, страницы, архивы и пагинация.
  • URL в canonical совпадает с каноническим адресом страницы.
  • URL проверен в Google Search Console после правок.

Если после всех правок дубли остаются, почти всегда проблема не в WordPress как таковом, а в том, что на сайте одновременно живут две логики: старая из темы и новая из плагина. В такой ситуации быстрее всего работает не «ещё один фикс», а полная инвентаризация того, кто именно пишет в wp_head.

Как отключить дубли meta robots и canonical в WordPress без поломки SEO
07.09.2026

Как очистить код от лишнего кода, внешних ссылок, неправильных заголовков.