Если на сайте есть несколько похожих URL с одним и тем же или почти одинаковым контентом, поисковику нужно подсказать, какую версию считать основной. Для этого и используют каноническую ссылку, или rel="canonical". В WordPress она особенно полезна для записей, страниц категорий, архивов с параметрами, пагинации и любых ситуаций, где один материал доступен по нескольким адресам.
Правильно настроенный canonical не «склеивает» страницы сам по себе, но помогает поисковым системам выбрать главную версию и не распылять сигналы ранжирования между дублями. Ниже разберём, когда он нужен, как WordPress формирует его по умолчанию и что делать, если нужно задать канонический адрес вручную.
Когда каноническая ссылка действительно нужна
В WordPress canonical полезен не только для явных дублей. Часто похожие URL появляются без участия владельца сайта:
- одна и та же запись открывается с параметрами в адресе, например для UTM-меток или сортировки;
- страница доступна и со слэшем в конце, и без него, если сервер или настройки сайта допускают оба варианта;
- есть пагинация архивов категорий и тегов;
- материал доступен через несколько рубрик или таксономий;
- на сайте есть страницы фильтров, поиска или сортировки, которые меняют URL, но не меняют смысл страницы;
- публикация дублируется в превью, AMP-версии, печатной версии или другом служебном формате.
Если у страницы только один адрес и нет похожих версий, вручную ничего настраивать не нужно. WordPress и так выводит canonical на большинстве стандартных страниц.
Как WordPress формирует canonical по умолчанию
В актуальных версиях WordPress канонические ссылки добавляются автоматически через ядро. Для записей, страниц, рубрик, меток и архивов WordPress обычно выводит корректный <link rel="canonical" ...> в <head>. Это значит, что на базовом сайте без сложной SEO-логики часто ничего дополнительно делать не требуется.
Проблемы начинаются, когда:
- SEO-плагин подменяет стандартный canonical своим;
- тема вручную выводит лишние метатеги в
head; - одна страница доступна по нескольким маршрутам;
- нужно указать не текущий URL, а другую основную версию страницы.
Поэтому сначала стоит проверить, какой canonical уже есть на странице, а не добавлять новый «на всякий случай».
Как проверить, есть ли canonical на странице
Самый простой способ — открыть исходный код страницы и найти строку с rel="canonical". В браузере это обычно делается через просмотр исходника страницы, а не через инспектор DOM, потому что canonical должен быть именно в HTML-ответе сервера.
Проверьте:
- есть ли одна строка
<link rel="canonical" ...>; - совпадает ли адрес в ней с нужной основной версией страницы;
- нет ли двух canonical одновременно — это уже ошибка;
- не указывает ли canonical на главную страницу или на другой URL без причины.
Если canonical отсутствует, дублируется или ведёт не туда, нужно искать источник: тему, SEO-плагин или кастомный код.
Как задать canonical вручную в WordPress
Ручная настройка нужна, когда стандартного canonical недостаточно. Самый безопасный способ — добавить фильтр в дочернюю тему или в небольшой функциональный плагин. Не редактируйте ядро WordPress: обновление всё перезапишет.
Для записи, страницы или любого другого объекта можно использовать фильтр get_canonical_url. Он позволяет подменить канонический адрес для конкретного контента.
Пример: если нужно для определённой записи указать другой canonical, добавьте код в functions.php дочерней темы или в собственный плагин:
add_filter( 'get_canonical_url', function( $canonical, $post ) {
if ( ! $post instanceof WP_Post ) {
return $canonical;
}
if ( (int) $post->ID === 123 ) {
return 'https://example.com/osnovnaya-stranica/';
}
return $canonical;
}, 10, 2 );Здесь 123 — ID нужной записи. Вместо него подставьте свой ID, а URL укажите в окончательном каноническом виде: с правильным протоколом, доменом, слэшем и без лишних параметров.
Этот способ подходит, если нужно точечно исправить canonical у одной записи или нескольких конкретных материалов. Если же проблема системная, лучше разобраться с SEO-плагином или структурой URL.
Что делать с категориями и архивами
Для категорий и архивов canonical обычно должен указывать на саму страницу архива, а не на отдельную запись внутри него. Это важно, если категория полезна как самостоятельная посадочная страница и у неё есть уникальный текст, описание и набор материалов.
Проблемы возникают в двух типичных случаях:
- категория дублируется через разные URL-параметры;
- страница категории открывается в нескольких вариантах пагинации, и canonical указывает не на текущую страницу, а на первую.
Для пагинированных архивов поисковики обычно ожидают canonical на саму текущую страницу пагинации, а не на первую страницу раздела. Если ваш SEO-плагин или тема делает иначе, это может мешать индексации страниц 2, 3 и далее. Тут важно не исправлять всё вручную без понимания логики: для архивов и пагинации поведение зависит от того, как именно реализован шаблон и какой плагин SEO используется.
Если категория не должна индексироваться как отдельная посадочная страница, иногда лучше не менять canonical, а пересмотреть саму SEO-стратегию для таксономии: что индексировать, а что закрывать от поиска.
Как работают SEO-плагины и почему они могут мешать
На практике canonical чаще всего управляется SEO-плагином. Если плагин уже выводит канонические ссылки, дополнительный код в теме может создать конфликт. В итоге на странице появятся два canonical, а это уже плохой сигнал для поисковиков.
Что проверить в первую очередь:
- не включена ли в плагине ручная переопределяющая настройка canonical для конкретной записи или типа контента;
- не дублирует ли тема вывод canonical через собственный код;
- не подключён ли другой плагин, который тоже работает с метатегами в
head; - не генерируется ли canonical через кэшированную старую версию страницы.
Если вы используете SEO-плагин, сначала ищите настройку canonical именно в нём. Ручной код в functions.php имеет смысл только тогда, когда плагин не даёт нужного результата или нужно точечное исключение.
Как проверить, что настройка работает правильно
После изменений откройте страницу в браузере и снова посмотрите исходный код. Должна быть только одна каноническая ссылка, и она должна вести на нужный URL. Затем проверьте ещё несколько страниц того же типа: запись, категория, архив с пагинацией, страница с параметрами.
Полезно проверить и серверный ответ, особенно если сайт использует кэш. Иногда в браузере уже виден новый canonical, а поисковый робот ещё получает старую версию из кэша. Если у вас подключён кэш-плагин или серверный кэш, очистите его после правок.
Для быстрой ручной проверки достаточно трёх вещей:
- canonical есть в HTML;
- он один;
- он указывает на нужную основную страницу без лишних параметров.
Типичные ошибки при настройке canonical
Самая частая ошибка — ставить canonical на главную страницу «на всякий случай». Так делать не нужно: у каждой страницы должен быть свой логичный основной адрес, если только это не явный дубль.
Ещё одна ошибка — указывать в canonical URL с UTM-метками, якорями или временными параметрами. Канонический адрес должен быть чистым и стабильным.
Также часто забывают о кэше. После изменения canonical поисковик и браузер могут какое-то время видеть старую версию страницы, пока не обновится кэш.
И наконец, не стоит одновременно закрывать страницу от индексации и оставлять на неё canonical как на основную. Если страница не должна участвовать в поиске, нужно отдельно решить, что с ней делать: индексировать, закрывать или перенаправлять.
Когда canonical лучше не трогать
Если у страницы один адрес, нет дублей и WordPress уже выводит корректный canonical, ручная настройка не нужна. Лишние правки только повышают риск ошибки. То же самое относится к большинству обычных записей и страниц на стандартной установке WordPress.
Настраивать canonical вручную имеет смысл тогда, когда вы точно видите проблему: дубли URL, неправильный адрес в исходнике, конфликт плагинов или необходимость указать другую основную версию страницы. В остальных случаях лучше сначала проверить структуру ссылок, работу SEO-плагина и кэш, а уже потом вмешиваться в разметку.
Если нужен точечный контроль над дублями и мета-тегами, в WordPress это обычно решается либо настройками SEO-плагина, либо небольшим кодом в дочерней теме. Главное — не создавать несколько источников canonical одновременно и всегда проверять итоговый HTML, а не только настройки в админке.