Как настроить canonical в WordPress для борьбы с дублями страниц

Если в WordPress одна и та же страница открывается по разным URL, поисковику нужно явно показать основную версию. Иначе в индекс могут попасть дубли: страницы с параметрами, архивы, пагинация, версии с UTM-метками, сортировкой или фильтрами. Для этого и нужен canonical — тег, который указывает предпочтительный адрес страницы.

В WordPress canonical можно настроить тремя способами: через SEO-плагин, через тему или вручную кодом. На практике чаще всего достаточно либо штатной поддержки в плагине, либо небольшой доработки шаблона. Главное — не плодить несколько canonical на одной странице и не ставить его наугад на все URL подряд.

Что именно делает canonical и когда он нужен

Canonical — это ссылка на «основную» версию страницы. Она не запрещает индексацию и не удаляет дубли сама по себе, а лишь подсказывает поисковику, какой URL считать предпочтительным. Для страниц с очень похожим содержимым это обычно лучший способ избежать размывания сигналов между дублями.

В WordPress canonical особенно полезен в таких случаях:

  • страница доступна с параметрами в URL, например ?utm_source=..., ?sort=..., ?filter=...;
  • один и тот же материал открывается через архив рубрики, метки, автора или дату;
  • есть пагинация архивов и списков;
  • страница доступна по нескольким адресам из-за особенностей темы или плагина;
  • на сайте есть похожие карточки, записи или посадочные страницы, где нужно закрепить одну основную версию.

Если страницы действительно разные по смыслу, canonical не должен «склеивать» их искусственно. Например, у фильтра каталога и у основной категории может быть разная ценность для поиска. В таком случае canonical ставят только там, где дублирование реально техническое, а не содержательное.

Как WordPress формирует canonical по умолчанию

В современных версиях WordPress canonical часто выводится автоматически через функцию rel_canonical(). Она подключается в <head> и формирует тег для записей, страниц, архивов и некоторых других типов контента. Но на практике этого не всегда достаточно.

Проблемы обычно возникают в трех ситуациях:

  • тема отключила стандартный вывод canonical или добавила свой вариант;
  • SEO-плагин уже генерирует canonical, а тема — еще один, и в коде страницы появляется дублирование;
  • нужен нестандартный canonical для конкретного шаблона, записи или архива.

Перед любыми правками сначала откройте исходный код страницы и проверьте, сколько тегов <link rel="canonical"> там уже есть. На странице должен быть один canonical, а не два и не три. Если их несколько, сначала убирают лишний источник, а не добавляют новый.

Самый простой способ: настроить canonical через SEO-плагин

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

Что проверить в плагине:

  • включен ли вывод canonical вообще;
  • нет ли отдельной настройки для архивов, пагинации и страниц с параметрами;
  • не переопределяет ли плагин canonical вручную в конкретной записи или таксономии;
  • не создает ли тема параллельный тег в <head>.

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

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

Как задать canonical через тему WordPress

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

В большинстве случаев canonical добавляют в файл header.php внутри секции <head>. Но перед этим нужно понять, не выводит ли WordPress или плагин уже готовый тег. Если вывод есть, новый тег добавлять не нужно.

Пример базовой логики для одиночной записи или страницы:

<?php if ( is_singular() ) : ?>
    <link rel="canonical" href="<?php echo esc_url( get_permalink() ); ?>" />
<?php endif; ?>

Такой вариант подходит, когда canonical должен указывать на постоянный URL самой записи или страницы. Но для архивов, пагинации и специальных шаблонов этого недостаточно: там адрес нужно формировать отдельно.

Если вы редактируете тему вручную, сначала сделайте резервную копию файла и проверьте изменения на тестовой копии сайта. Ошибка в header.php может сломать вывод всего сайта, если случайно нарушить HTML или PHP-синтаксис.

Когда правка темы оправдана

Этот способ имеет смысл, если:

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

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

Настройка canonical через код: когда нужен точечный контроль

Иногда canonical нужно менять не для всего сайта, а только для отдельных страниц, архивов или URL с параметрами. В этом случае удобнее использовать фильтр rel_canonical. Он позволяет подменить адрес, который WordPress выводит в canonical.

Ниже пример, который оставляет стандартный canonical для обычных страниц, но убирает параметры из URL, если они есть:

<?php
add_filter( 'rel_canonical', function( $canonical ) {
    if ( is_admin() ) {
        return $canonical;
    }

    if ( empty( $canonical ) ) {
        return $canonical;
    }

    $parts = wp_parse_url( $canonical );

    if ( empty( $parts['scheme'] ) || empty( $parts['host'] ) ) {
        return $canonical;
    }

    $clean = $parts['scheme'] . '://' . $parts['host'];

    if ( ! empty( $parts['port'] ) ) {
        $clean .= ':' . $parts['port'];
    }

    $clean .= ! empty( $parts['path'] ) ? $parts['path'] : '/';

    return $clean;
} );

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

Если вам нужен canonical для конкретного шаблона, лучше писать условие точнее: по типу записи, таксономии, архиву или отдельному ID страницы. Чем уже условие, тем меньше риск сломать canonical там, где он и так работает правильно.

Как проверить, что canonical настроен правильно

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

Проверка занимает пару минут:

  1. Откройте страницу, которую хотите проверить.
  2. Посмотрите исходный код страницы через браузер.
  3. Найдите rel="canonical".
  4. Убедитесь, что тег один.
  5. Проверьте, что URL в href совпадает с основной версией страницы без лишних параметров.

Для страниц с параметрами откройте и чистый URL, и URL с параметром. Если canonical на обеих версиях указывает на один и тот же основной адрес, настройка работает как нужно.

Полезно проверить и архивы: рубрики, метки, страницы пагинации. У них canonical должен быть логичным и не вести, например, со второй страницы архива на первую, если это не соответствует вашей схеме. Здесь многое зависит от темы и SEO-плагина, поэтому слепо копировать настройки с другого сайта не стоит.

Типичные ошибки, из-за которых canonical не помогает

Самая частая проблема — на странице одновременно выводятся два canonical. Обычно это происходит, когда его добавили и тема, и плагин. Поисковик в такой ситуации может проигнорировать оба или выбрать не тот, который вы ожидали.

Еще одна ошибка — ставить canonical на все страницы на главную. Так делать не нужно. Canonical должен указывать на эквивалентную или основную версию конкретной страницы, а не на произвольный URL ради «чистки дублей».

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

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

Что выбрать: тему, плагин или код

СпособКогда подходитПлюсыМинусы
SEO-плагинОбычные записи, страницы, архивыПросто, безопасно, удобно поддерживатьМеньше гибкости для нестандартных сценариев
ТемаНужно быстро добавить canonical без плагинаНе требует отдельного расширенияЛегко сломать при обновлении, нужен контроль за дублированием
Код через фильтрТочечная логика для отдельных URL и шаблоновМаксимальная гибкостьТребует аккуратной проверки и понимания условий

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

Для сайтов, где часто приходится чистить дубли и управлять техническими SEO-настройками, может пригодиться Clearfy Pro: он помогает централизованно управлять рядом SEO- и технических настроек WordPress, чтобы не собирать одно и то же по разным файлам и плагинам.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как закрыть от индексации страницы с параметрами в URL в WordPress
17.10.2026
Как создать адаптивный плагин WordPress с настройками
20.09.2026
Как настроить canonical в WordPress для борьбы с дублями страниц
14.10.2026
Как найти и удалить битые ссылки в WordPress
11.10.2026
Как отключить архивы тегов в WordPress и не потерять SEO-трафик
09.11.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше