Если один и тот же контент доступен по нескольким URL, поисковик может выбрать не ту версию: с параметром в адресе, со слэшем или без него, из архива категории, из пагинации или из технической страницы. В WordPress это решается не одной кнопкой, а пониманием того, какой URL должен считаться основным и где именно его задать. Canonical как раз и нужен для того, чтобы явно указать поисковым системам предпочтительную страницу.
В WordPress базовый canonical часто уже выводится автоматически, но на практике этого недостаточно, если у вас есть дубли из-за фильтров, пагинации, архивов, тегов, вложенных рубрик или служебных страниц. Ниже разберём, как проверить текущий canonical и как настроить его для записей, категорий и технических страниц без лишней магии.
Что именно делает canonical и когда он нужен
Canonical — это тег <link rel="canonical" href="..."> в <head> страницы. Он не запрещает индексацию и не удаляет дубликаты сам по себе. Его задача проще: подсказать поисковику, какой URL считать основной версией страницы, если содержимое доступно по нескольким адресам.
В WordPress canonical особенно полезен в таких случаях:
- одна запись открывается по нескольким URL из-за параметров сортировки, UTM-меток или фильтров;
- страница категории доступна в архиве, через пагинацию и иногда через альтернативные пути;
- технические страницы сайта дублируют контент друг друга или основного раздела;
- один и тот же материал доступен в нескольких рубриках, а нужен только один главный адрес;
- сайт использует плагины, которые создают дополнительные представления контента.
Важно не путать canonical с редиректом. Если дубли реально не нужны пользователю, правильнее убрать их 301-редиректом. Canonical полезен там, где дубликаты должны существовать технически, но поисковику нужен один основной URL.
Проверка: есть ли canonical уже сейчас
Перед настройкой стоит посмотреть, что WordPress и тема выводят сейчас. Откройте нужную страницу в браузере, посмотрите исходный код и найдите строку с rel="canonical". На большинстве сайтов WordPress её добавляет автоматически через функцию rel_canonical().
Если canonical уже есть, проверьте три вещи:
- адрес в
hrefсовпадает с тем URL, который вы считаете основным; - на странице нет двух canonical одновременно;
- canonical не указывает на несуществующую страницу, редирект или URL с ошибкой в протоколе и домене.
Если canonical отсутствует, значит его убрал шаблон темы, плагин SEO, кастомный код или страница генерируется нестандартно. Тогда нужно понять, где именно управлять тегом.
Где задавать canonical в WordPress
Способ зависит от типа страницы и от того, чем управляется SEO на сайте. На практике есть три рабочих уровня: настройки SEO-плагина, правка шаблона или фильтра WordPress, а для отдельных страниц — ручное указание canonical в метаполях плагина.
| Тип страницы | Как задавать canonical | Когда это уместно |
|---|---|---|
| Запись | Через SEO-плагин или вручную в шаблоне | Если у записи есть дубли по параметрам, в категориях или на служебных URL |
| Категория | Через SEO-плагин или фильтр темы/плагина | Если архив категории конкурирует с другими архивами или пагинацией |
| Техническая страница | Через шаблон, фильтр или настройку плагина | Если страница должна ссылаться на основной раздел сайта |
Если на сайте уже стоит SEO-плагин, сначала ищите настройку там. Это безопаснее, чем лезть в шаблон: плагин обычно сам корректно выводит canonical для записей, рубрик, страниц пагинации и архивов.
Как задать canonical для записей
Для обычной записи canonical чаще всего должен совпадать с её постоянным URL. Если запись доступна по нескольким адресам, canonical должен указывать на основной вариант без параметров и лишних путей.
Если вы используете SEO-плагин, проверьте настройки конкретной записи. Во многих плагинах есть поле для canonical URL в редакторе записи. Туда можно вручную вписать нужный адрес, если запись должна ссылаться на другую страницу или если у неё есть несколько технических версий.
Ручной canonical нужен, когда:
- запись дублируется на нескольких URL из-за внешней логики сайта;
- нужно указать каноническую страницу для материала, который частично повторяется в нескольких местах;
- вы переносите контент и временно сохраняете старые адреса.
Если вы хотите задать canonical кодом, в WordPress это обычно делают через фильтр get_canonical_url для конкретного типа записи или через отключение стандартного вывода и собственный тег в wp_head. Но такой путь нужен только если SEO-плагин не справляется или вы пишете собственную логику. Для обычного сайта это избыточно и повышает риск ошибки.
Как настроить canonical для категорий и архивов
С категориями ситуация сложнее, чем с записями. Архив категории может быть каноническим сам по себе, а может конкурировать с другими архивами, если одна и та же подборка материалов доступна через несколько рубрик или через пагинацию.
Для категории canonical обычно должен указывать на саму категорию, а не на первую запись внутри неё и не на главную страницу сайта. Исключение — если категория техническая и не должна ранжироваться отдельно. Тогда canonical может вести на более общий раздел, но это уже осознанное SEO-решение, а не стандартная настройка.
Что проверить у категорий:
- не подставляет ли тема собственный canonical для архивов;
- не дублируется ли категория через теги, авторские архивы или страницы пагинации;
- не создаёт ли плагин фильтрации отдельные URL с тем же списком записей.
Если у категории есть пагинация, canonical для страниц 2, 3 и дальше обычно должен указывать на саму страницу пагинации, а не на первую страницу архива. Иначе поисковик может игнорировать содержимое последующих страниц. Это особенно важно для больших рубрик и архивов с большим количеством материалов.
Что делать с техническими страницами и дублями служебных URL
К техническим страницам относятся, например, страницы поиска, результаты фильтров, версии с параметрами сортировки, страницы предпросмотра и другие URL, которые не являются основным контентом. Здесь canonical помогает не столько «продвинуть» страницу, сколько убрать путаницу в индексации.
Если техническая страница должна оставаться доступной, но её содержимое повторяет уже существующий раздел, canonical обычно указывает на основной раздел. Например, страница с фильтром товаров или записей может ссылаться на базовый архив без параметров. Если же страница не несёт самостоятельной ценности, canonical одного только недостаточно — тогда обычно добавляют noindex или закрывают её от индексации другим способом. Но это уже отдельная задача, и смешивать её с canonical без необходимости не стоит.
Для технических страниц особенно важно не ставить canonical «наугад». Если страница отличается по смыслу или содержит уникальные данные, canonical на чужой URL может мешать поисковику понять структуру сайта.
Как задать canonical вручную через код, если плагина недостаточно
Иногда SEO-плагин не позволяет гибко управлять canonical для нестандартных шаблонов. Тогда можно добавить собственный тег в wp_head. Перед изменениями сделайте резервную копию темы или работайте в дочерней теме: ошибка в шаблоне может сломать вывод страницы.
Ниже пример для случая, когда нужно вывести canonical только для конкретного шаблона или типа страницы. Код нужно адаптировать под ваш сайт:
add_action( 'wp_head', function () {
if ( is_singular( 'post' ) ) {
echo '<link rel="canonical" href="' . esc_url( get_permalink() ) . '" />' . "\n";
}
}, 1 );Этот пример показывает принцип: на одиночной записи canonical берётся из get_permalink(). Если у вас уже есть стандартный canonical от WordPress или SEO-плагина, не добавляйте второй такой же тег. Сначала отключите дублирующий вывод, иначе поисковик увидит конфликтующие указания.
Если canonical нужно менять для отдельных URL, логика обычно строится на условных тегах WordPress: is_singular(), is_category(), is_page(), is_post_type_archive(). Но перед внедрением такого кода стоит чётко описать правило: для каких страниц canonical меняется и на какой адрес он должен вести.
Как проверить, что настройка сработала
После изменения canonical не ограничивайтесь визуальной проверкой страницы. Откройте исходный код и убедитесь, что:
- на странице есть ровно один тег
rel="canonical"; - URL в canonical совпадает с нужной канонической страницей;
- canonical не ведёт на редирект;
- на страницах категорий и пагинации canonical соответствует логике архива, а не случайной записи;
- для технических страниц canonical не конфликтует с
noindex, если вы его используете отдельно.
Дальше проверьте страницу в инструментах для вебмастеров поисковой системы, которой вы пользуетесь. Там обычно видно, какой canonical выбран самим поисковиком и совпадает ли он с вашим. Если поисковик выбирает другой URL, значит проблема не только в теге: возможно, страница дублируется слишком сильно, внутренние ссылки ведут на разные версии, а canonical не подкреплён структурой сайта.
Какие ошибки встречаются чаще всего
Самая частая ошибка — ставить canonical на главную страницу сайта «для надёжности». Так делать не нужно: если страница не является дублем главной, canonical должен указывать на её собственный адрес или на действительно каноническую версию.
Ещё одна типичная проблема — несколько canonical на одной странице. Это бывает после ручной правки темы, установки SEO-плагина и добавления собственного кода одновременно. В такой ситуации поисковик может проигнорировать оба варианта.
Третья ошибка — canonical на URL, который сам редиректит или закрыт от доступа. Тогда сигнал становится слабым или противоречивым. Сначала убедитесь, что канонический адрес открывается напрямую и отдаёт 200 OK.
Если у вас много дублей из-за структуры сайта, canonical стоит рассматривать как часть общей настройки, а не как единственное решение. Но для записей, категорий и технических страниц WordPress это обычно первый и самый практичный шаг: он помогает явно обозначить основную версию URL и убрать лишнюю неопределённость для поисковиков.