Если у страницы в WordPress есть несколько адресов, поисковику нужно явно показать, какой из них считать основным. Для этого и используется canonical URL: в HTML-страницу добавляется тег с адресом канонической версии, а поисковые системы ориентируются на него при выборе страницы для индексации.
На практике canonical нужен не для всех страниц подряд. Его ставят там, где один и тот же контент доступен по разным URL: с параметрами, с UTM-метками, через сортировку, пагинацию, фильтры, иногда через дубли с www и без www или с http и https. Если же страница уникальна и у неё один нормальный адрес, вручную трогать canonical обычно не нужно.
Когда canonical в WordPress действительно нужен
Самая частая причина — дубли. WordPress и плагины могут создавать несколько адресов для одного и того же содержимого. Поисковик видит это как набор похожих страниц и должен выбрать одну основную. Если вы не помогаете ему, он делает это сам, а выбор не всегда совпадает с вашим.
Canonical полезен в таких случаях:
- страница открывается с параметрами в URL, но контент не меняется;
- один и тот же материал доступен через несколько путей навигации;
- есть версии с сортировкой, фильтрами, метками кампаний;
- нужно указать основную версию статьи, товара или категории;
- пагинация создаёт похожие страницы, но вы хотите, чтобы основной считалась первая.
Не стоит использовать canonical как универсальную замену настройкам сайта. Если у вас технически доступны и индексируются лишние версии страниц, сначала лучше убрать причину дубля: настроить редирект, закрыть лишние параметры, привести структуру ссылок к одному варианту. Canonical помогает поисковику, но не исправляет архитектуру сайта.
Что именно делает canonical URL
Canonical — это не жёсткая команда, а подсказка. В HTML-коде страницы размещается тег вида <link rel="canonical" href="https://example.com/page/" />. Он говорит поисковой системе: «если эта страница похожа на другие версии, основная — вот эта».
Важно понимать два момента.
- Canonical должен указывать на доступную, индексируемую страницу с корректным ответом сервера, обычно 200 OK.
- Адрес в canonical должен быть каноническим не только по смыслу, но и по факту: с правильным протоколом, доменом, слешем на конце или без него — в том формате, который принят на сайте.
Если canonical ведёт на страницу, которая закрыта от индексации, отдаёт 404 или редиректит на другой адрес, сигнал становится слабым или противоречивым. В таких случаях сначала исправляют сам URL, а уже потом canonical.
Как задать canonical в WordPress без кода
В большинстве случаев WordPress уже выводит canonical автоматически. Это делает ядро и, если всё настроено нормально, вручную ничего добавлять не нужно. Но если у вас SEO-плагин, он может переопределять стандартное поведение или добавлять дополнительные правила для архивов, записей и таксономий.
Самый безопасный путь — проверить, что canonical уже есть, а потом при необходимости настроить его через SEO-плагин. В популярных плагинах обычно можно:
- задать canonical для конкретной записи или страницы в блоке SEO-настроек;
- указать основной адрес для архивов, категорий и тегов;
- отключить индексацию страниц, которые не должны конкурировать с основными;
- настроить шаблоны canonical для типов записей и таксономий.
Если плагин позволяет вручную прописать canonical для отдельной страницы, используйте это только в исключительных случаях: когда есть реальная дубль-версия или альтернативный адрес, который должен ссылаться на основной URL. Для обычных записей и страниц лучше оставить автоматическую генерацию.
Когда нужен код и как добавить canonical вручную
Ручная настройка нужна, если вы не используете SEO-плагин или хотите изменить поведение на уровне темы. В WordPress это делается через вывод тега в секции <head>. Перед изменениями сделайте резервную копию темы или работайте в дочерней теме: ошибка в шаблоне может сломать вывод страницы.
Если нужно добавить canonical для конкретного шаблона, в файл темы, который отвечает за вывод <head>, можно вставить такой код:
<link rel="canonical" href="https://example.com/your-page/" />Но на практике лучше не хардкодить адрес прямо в шаблоне, если речь идёт о динамических страницах. Для WordPress надёжнее использовать фильтр rel_canonical, чтобы не ломать логику ядра и не дублировать тег.
Пример: если вам нужно изменить canonical для конкретной записи, можно добавить в functions.php дочерней темы такой код:
add_filter( 'rel_canonical', function( $canonical ) {
if ( is_singular( 'post' ) && get_the_ID() === 123 ) {
return 'https://example.com/main-article/';
}
return $canonical;
} );Здесь 123 — ID записи, а https://example.com/main-article/ — адрес основной версии. Такой подход подходит точечно, когда нужно исправить одну проблемную страницу. Если вы хотите массово менять canonical для целого типа записей, лучше сначала понять причину дублей: возможно, проблема решается настройками постоянных ссылок или SEO-плагина, а не кодом.
Как проверить, что canonical работает правильно
После настройки откройте страницу в браузере и посмотрите исходный код. В HTML должен быть один тег canonical, а не несколько. Если у страницы есть SEO-плагин, проверьте, не выводит ли он свой canonical поверх вашего.
Проверять нужно не только наличие тега, но и сам адрес:
- он должен совпадать с основной версией страницы;
- в нём не должно быть лишних параметров;
- адрес должен открываться без редиректов или ошибок;
- на странице не должно быть противоречивых сигналов, например canonical на одну версию, а внутренние ссылки ведут на другую.
Если вы проверяете через инструменты поисковых систем, учитывайте, что они не всегда сразу принимают новый canonical. После изменения может пройти время, прежде чем поисковик переобойдёт страницу и обновит сигнал.
Где canonical лучше не менять вручную
Есть ситуации, в которых ручная правка чаще вредит, чем помогает. Например, если у записи уже есть один нормальный адрес и нет дублей, не нужно переписывать canonical «на всякий случай». То же касается страниц, где canonical должен совпадать с текущим URL по умолчанию.
Не стоит вмешиваться вручную, если:
- вы не уверены, какая версия страницы должна быть основной;
- canonical уже корректно генерируется WordPress или SEO-плагином;
- страница является единственной и не имеет дублей;
- вы хотите использовать canonical вместо редиректа, хотя проблема именно в смене адреса;
- на сайте много параметров, и вы не разобрались, какие из них создают дубли, а какие нужны для работы фильтра или сортировки.
В таких случаях сначала полезнее проверить структуру URL, настройки постоянных ссылок, работу фильтров и архивов. Canonical — это инструмент для указания предпочтительной версии, а не способ скрыть неаккуратную архитектуру сайта.
Практический порядок действий
Если нужно быстро привести canonical в порядок, действуйте так:
- Найдите, какие URL у одной и той же страницы реально доступны.
- Определите, какой адрес должен считаться основным.
- Проверьте, не создаёт ли дубль SEO-плагин, тема или параметры в ссылке.
- Если canonical уже есть и он правильный, ничего не меняйте.
- Если canonical отсутствует или указывает не туда, настройте его через плагин или фильтр
rel_canonical. - После правки проверьте исходный код страницы и убедитесь, что тег один и ведёт на нужный адрес.
Если задача касается нескольких типов страниц, не пытайтесь решить всё одним шаблоном. Для записей, страниц, архивов и параметрических URL логика может отличаться. В WordPress canonical должен помогать поисковику выбрать основную версию, а не маскировать ошибки в структуре сайта. Когда это правило соблюдено, настройка работает предсказуемо и без лишнего риска для индексации.