Если одна и та же страница в WordPress открывается по разным адресам, поисковик может воспринимать это как дубли. В итоге в индексе оказываются несколько URL с одинаковым или почти одинаковым содержимым, а сигналы ранжирования распыляются между ними. Canonical как раз нужен для того, чтобы явно указать основную, каноническую версию страницы и подсказать поисковой системе, какой адрес считать главным.
Для WordPress это особенно актуально, когда один и тот же контент доступен через параметры в URL, пагинацию, архивы, сортировки, UTM-метки, версии со слешем и без него, а иногда и через разные шаблоны темы или плагины. Сам по себе canonical не удаляет дубли из сайта, но помогает поисковику выбрать правильный адрес и снижает риск каннибализации в выдаче.
Когда canonical действительно нужен
Тег canonical нужен не для всех страниц подряд, а там, где есть несколько URL с одним и тем же или почти одинаковым содержимым. Типичные случаи в WordPress:
- страница доступна с параметрами сортировки или фильтрации;
- в URL добавляются UTM-метки и другие tracking-параметры;
- один и тот же материал открывается в нескольких разделах или архивах;
- есть версии с www и без www, http и https, со слешем и без слеша;
- пагинация создаёт несколько адресов одной сущности;
- плагины или тема выводят одинаковый контент на разных URL.
Если страницы реально разные по смыслу, canonical ставить на одну из них нельзя. Например, у разных товаров, статей или посадочных страниц должен быть свой собственный адрес. Canonical используют только тогда, когда дублируется именно URL, а не содержание как отдельная сущность.
Как WordPress и SEO-плагины обычно формируют canonical
В современных версиях WordPress базовый canonical для записей и страниц часто уже выводится автоматически, но на практике этого не всегда достаточно. Плагины SEO-оптимизации могут переопределять тег, добавлять его на архивы, таксономии и другие типы страниц, а тема или кастомный код иногда ломают вывод или создают несколько canonical одновременно.
Если у вас установлен SEO-плагин, сначала проверьте, не управляет ли он canonical сам. В большинстве случаев лучше использовать один источник правды: либо возможности SEO-плагина, либо собственный код. Два разных canonical на одной странице — это уже ошибка, которую поисковик может проигнорировать.
Проверьте, какой canonical сейчас отдает сайт
Перед изменениями полезно понять, что уже выводится в коде страницы. Откройте нужный URL в браузере, посмотрите исходный код и найдите строку с <link rel="canonical" href="..." />. Если canonical отсутствует, ведёт на неправильный адрес или дублируется, это и есть точка для исправления.
Проверять стоит не только главную страницу, но и проблемные варианты URL: с параметрами, с www и без www, с UTM-метками, с пагинацией, а также страницы, которые открываются из разных разделов сайта. Если canonical везде указывает на разные адреса для одного и того же контента, поисковику будет сложнее выбрать основную версию.
Как задать canonical в WordPress через SEO-плагин
Самый практичный вариант для большинства сайтов — настроить canonical в SEO-плагине, если он уже используется. Это проще и безопаснее, чем писать собственный код, потому что плагин обычно умеет корректно обрабатывать записи, страницы, архивы и таксономии.
Логика настройки в популярных SEO-плагинах обычно одинаковая: вы открываете нужную запись или страницу в админке, находите поле canonical URL и указываете полный адрес канонической версии. После сохранения плагин начинает выводить этот адрес в <head>.
Если canonical нужен для архивной страницы или таксономии, настройка может быть в общих параметрах SEO-плагина или в редактировании термина. Здесь важно не подменять канонический адрес случайным URL из другой сущности: canonical должен вести на страницу с тем же смыслом и тем же контентом.
Когда нужен собственный код и как его добавить
Свой код нужен, если SEO-плагина нет, он не даёт нужной гибкости или canonical нужно менять по нестандартному правилу. В WordPress для этого используют фильтр wpseo_canonical в Yoast SEO или аналогичный механизм конкретного SEO-плагина. Если SEO-плагина нет, можно вывести тег через wp_head, но тогда нужно аккуратно следить, чтобы не было второго canonical от темы или другого плагина.
Ниже пример для случая, когда нужно принудительно задать canonical для конкретной страницы. Код лучше добавлять в дочернюю тему или через собственный мини-плагин, а не прямо в файлы основной темы.
add_filter( 'wpseo_canonical', function( $canonical ) {
if ( is_page( 123 ) ) {
return home_url( '/osnovnaya-stranica/' );
}
return $canonical;
} );В этом примере для страницы с ID 123 canonical будет указывать на адрес /osnovnaya-stranica/. Число 123 и URL нужно заменить на свои значения. Если у вас другой SEO-плагин, фильтр будет отличаться, поэтому сначала проверьте документацию именно этого плагина.
Если canonical нужно выводить без SEO-плагина, можно использовать wp_head. Такой вариант рабочий, но требует внимательности: сначала убедитесь, что тема не печатает свой canonical сама.
add_action( 'wp_head', function() {
if ( is_page( 123 ) ) {
echo '<link rel="canonical" href="' . esc_url( home_url( '/osnovnaya-stranica/' ) ) . '" />' . "\n";
}
}, 1 );При использовании собственного кода не забывайте, что canonical должен быть абсолютным URL, то есть с протоколом и доменом. Относительные пути в canonical использовать не стоит.
Что делать с дублями от параметров, сортировки и UTM-меток
Если дубли появляются из-за параметров в URL, canonical обычно должен указывать на чистый адрес без параметров. Это касается UTM-меток, служебных параметров и некоторых вариантов сортировки, когда содержимое страницы по сути не меняется.
Например, если статья открывается как https://site.ru/post/?utm_source=newsletter, canonical должен вести на https://site.ru/post/. Так поисковик понимает, что параметр не создаёт новую страницу, а лишь меняет источник перехода или способ отображения.
С фильтрами и сортировкой нужно быть осторожнее. Если параметр действительно меняет состав товаров, записей или результатов поиска, canonical на чистую страницу может быть неверным. В таких случаях решение зависит от того, хотите ли вы индексировать вариант с фильтром как отдельную страницу или нет. Универсального ответа здесь нет, и подменять разные по смыслу страницы одной канонической версией нельзя.
Как проверить, что настройка сработала
После изменения откройте страницу в браузере и снова проверьте исходный код. В <head> должен быть только один canonical, и он должен вести на нужный URL. Если вы меняли код, проверьте не только страницу, но и её проблемные варианты с параметрами.
Дополнительно полезно посмотреть, как страницу видит поисковая система: через инструменты вебмастера или проверку URL в поисковой консоли. Если canonical указан правильно, но поисковик выбирает другой адрес, значит есть более сильные сигналы: внутренние ссылки, редиректы, sitemap, дубли в шаблонах или конфликтующие canonical на других версиях страницы.
Если canonical не появился, проверьте три вещи: не отключён ли его вывод в SEO-плагине, не печатает ли тема свой тег отдельно и не кешируется ли старая версия страницы. На сайтах с агрессивным кешированием после правок иногда нужно очистить кеш плагина, сервера и CDN, иначе вы будете видеть старый HTML.
Какие ошибки чаще всего мешают canonical работать
На практике проблемы обычно возникают не из-за самого тега, а из-за неправильной логики его применения. Самые частые ошибки такие:
- canonical ведёт на несуществующую страницу или страницу с редиректом;
- на одной странице выводится сразу несколько canonical;
- canonical указывает на URL с параметрами, хотя нужен чистый адрес;
- каноническая версия отличается по смыслу от исходной страницы;
- редирект и canonical противоречат друг другу;
- внутренние ссылки ведут на неканонические варианты, хотя в коде canonical задан правильно.
Если canonical и редирект конфликтуют, обычно приоритетнее редирект: он жёстко отправляет пользователя и поисковика на другой адрес. Canonical — это рекомендация, а не принудительное правило. Поэтому для явных дублей лучше сначала устранить причину появления лишних URL, а canonical использовать как дополнительный сигнал.
Когда одного canonical недостаточно
Canonical помогает, но не заменяет нормальную структуру сайта. Если дубли создаются из-за неправильных ссылок, лишних архивов, одинаковых шаблонов или технических ошибок, лучше исправить источник проблемы. Иначе поисковик будет постоянно получать новые варианты одного и того же контента.
Для WordPress это обычно означает три практических шага: привести внутренние ссылки к одному формату, убрать лишние версии URL на уровне настроек и шаблонов, а затем уже закрепить основную версию через canonical. Такой порядок даёт более стабильный результат, чем попытка лечить всё только тегом в <head>.
Если на сайте много технических дублей и нужно централизованно управлять SEO-настройками, имеет смысл посмотреть в сторону решений, которые помогают контролировать мета-теги и лишние страницы. Например, Clearfy Pro может быть полезен как инструмент для работы с SEO-настройками и дублями, если вам нужен более удобный контроль без ручного правки кода.
В итоге canonical в WordPress — это не сложная настройка, а аккуратная фиксация главного URL для страниц, которые доступны в нескольких вариантах. Если задать его на правильную версию, проверить вывод в коде и не смешивать разные по смыслу страницы, риск дублей и каннибализации заметно снижается.