Если у страницы в WordPress появляются версии с параметрами в URL — например, UTM-метки, сортировка, фильтры, пагинация или служебные хвосты вроде ?replytocom= — поисковик может увидеть несколько почти одинаковых адресов. В такой ситуации canonical помогает подсказать, какой URL считать основной версией страницы, а какие — дублями.
Для сайтов с фильтрами и рекламной разметкой это не «косметика для SEO», а рабочий способ уменьшить путаницу в индексации. Но canonical не лечит всё подряд: он должен указывать на действительно канонический адрес, а не на случайную страницу, и не должен конфликтовать с редиректами, robots.txt или внутренней логикой плагинов.
Что именно нужно настроить
Задача простая: на страницах, которые открываются с параметрами, в <head> должен быть тег rel="canonical", указывающий на чистый URL основной страницы без лишних параметров. Например, если пользователь открыл https://site.ru/catalog/?utm_source=adwords, canonical обычно должен вести на https://site.ru/catalog/.
Для страниц с фильтрами логика зависит от того, как устроен сайт. Если фильтр меняет только сортировку или служебные параметры и не создаёт отдельную ценную страницу, canonical чаще всего ведёт на базовую категорию. Если же фильтр формирует отдельную посадочную страницу, которую вы действительно хотите индексировать, canonical должен указывать на этот же URL, а не на общий каталог.
Проверьте, кто уже ставит canonical
В WordPress canonical часто добавляет сам движок, а также SEO-плагины. Поэтому перед правками важно понять, нет ли уже готовой настройки, которую достаточно изменить, а не писать код вручную.
Посмотрите исходный код страницы и найдите строку вида:
<link rel="canonical" href="https://site.ru/page/" />
Если canonical уже есть, проверьте три вещи:
- адрес ведёт на нужную основную версию;
- в ссылке нет лишних параметров;
- на странице не выводится два canonical одновременно.
Два тега canonical — частая ошибка. Обычно она возникает, когда один тег добавляет тема, второй — SEO-плагин, а третий — кастомный код в functions.php. Поисковик в такой ситуации может проигнорировать подсказку целиком.
Как настроить canonical через SEO-плагин
Если на сайте уже стоит SEO-плагин, сначала используйте его возможности. Это безопаснее, чем вмешиваться в шаблоны темы, и проще поддерживать при обновлениях.
В большинстве случаев плагин сам формирует canonical для обычных страниц, записей и рубрик. Ваша задача — проверить настройки для архивов, пагинации и страниц с параметрами. Если плагин позволяет задавать canonical вручную для конкретной записи или страницы, используйте это только там, где автоматическая логика не подходит.
Практический сценарий такой:
- Откройте страницу, которую нужно считать основной.
- Проверьте, какой canonical выводится сейчас.
- Если canonical указывает не туда, найдите настройку в SEO-плагине или в шаблоне страницы.
- Сохраните изменения и снова проверьте исходный код.
Если плагин умеет отключать canonical на отдельных типах страниц, не делайте это без причины. Для большинства страниц canonical должен быть, а не отсутствовать.
Когда нужен код в WordPress
Код нужен, если:
- тема не даёт управлять canonical;
- нужно переопределить canonical только для страниц с параметрами;
- SEO-плагин не подходит под вашу логику фильтров.
В WordPress canonical можно изменить через фильтр wpseo_canonical, если используется Yoast SEO. Это рабочий вариант, когда нужно вернуть чистый URL без UTM-меток или других служебных параметров.
Ниже пример для случая, когда canonical должен игнорировать параметры utm_*, gclid и fbclid, а также любые другие параметры, которые не меняют содержимое страницы:
add_filter( 'wpseo_canonical', function( $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'];
}
if ( ! empty( $parts['path'] ) ) {
$clean .= $parts['path'];
}
return trailingslashit( $clean );
} );Этот пример не удаляет параметры из текущего URL напрямую, а нормализует сам canonical до чистого адреса. Он подходит только если вы уверены, что параметры не меняют содержимое страницы и не должны быть отдельными версиями.
Если у вас не Yoast SEO, а другой плагин, фильтр будет другим. Универсального хука, который одинаково работает для всех SEO-плагинов, нет. В таком случае лучше использовать штатные настройки плагина или править шаблон темы, если он сам выводит canonical.
Как обрабатывать UTM-метки и служебные параметры
UTM-метки, gclid, fbclid и похожие параметры обычно не должны создавать отдельные канонические страницы. Их задача — передать данные аналитике, а не менять контент. Поэтому canonical для таких URL должен вести на чистую версию страницы.
Это особенно важно, если рекламные ссылки активно используются в рассылках и объявлениях. Без canonical поисковик может индексировать множество почти одинаковых URL, а сигналы ссылок и поведенческие данные будут распыляться между дублями.
При этом canonical не заменяет редирект. Если параметр вообще не нужен для просмотра страницы и создаёт мусорные URL, иногда разумнее настроить 301-редирект или не генерировать такие ссылки внутри сайта. Но для UTM-меток редирект обычно не делают, потому что они нужны аналитике на входе.
Что делать с фильтрами и сортировкой
Фильтры — самый тонкий случай. Здесь нельзя просто по привычке ставить canonical на главную категорию для всех URL с параметрами. Сначала нужно понять, меняет ли параметр смысл страницы.
Ориентируйтесь на такую логику:
- сортировка, вид отображения, количество товаров на странице — обычно дубль, canonical на базовую страницу;
- служебные параметры фильтра, которые не создают отдельную посадочную страницу, — тоже canonical на базовую страницу;
- фильтрованные страницы, которые вы специально продвигаете и у них есть собственный контент, заголовок и мета-данные, — canonical на саму страницу фильтра.
Если фильтрованные страницы индексируются, они должны быть оформлены как полноценные посадочные: с уникальным текстом, понятным URL и стабильным содержимым. Иначе canonical на саму себя не спасёт от дублей и слабой релевантности.
Как проверить, что canonical работает правильно
После настройки не ограничивайтесь визуальной проверкой в админке. Откройте страницу с параметрами в браузере и посмотрите исходный код. Canonical должен быть один, и он должен вести на нужный URL.
Проверьте несколько сценариев:
- страница без параметров;
- та же страница с UTM-метками;
- страница с фильтром или сортировкой;
- пагинация, если она есть на сайте.
Если canonical на разных версиях страницы отличается не так, как вы ожидали, ищите источник в теме, SEO-плагине или кастомном коде. Иногда проблема не в самой настройке canonical, а в том, что шаблон страницы строит URL на основе текущего запроса и подхватывает параметры автоматически.
Для быстрой проверки удобно смотреть исходный HTML, а не только визуальный результат. В браузере это делается через просмотр кода страницы или инструменты разработчика. Если сайт кэшируется, после изменений очистите кэш плагина, сервера и CDN, иначе вы можете видеть старую версию canonical.
Чего не стоит делать
Есть несколько типичных ошибок, которые потом сложно разбирать по логам и индексации:
- ставить canonical на главную страницу сайта для всех параметрических URL;
- оставлять два или три canonical на одной странице;
- указывать canonical на URL, который закрыт от индексации или отдаёт редирект;
- использовать canonical как замену нормальной структуре ссылок;
- канонизировать страницы с разным содержимым в один и тот же адрес.
Последний пункт особенно важен. Если страницы реально отличаются по контенту, canonical должен отражать это, а не просто «собирать» их в одну группу ради чистоты отчёта. Иначе поисковик может проигнорировать подсказку или выбрать свою версию.
Практический ориентир для типового сайта на WordPress
Если у вас обычный сайт на WordPress с блогом, каталогом или набором посадочных страниц, рабочая схема обычно такая:
- основные страницы и записи получают стандартный canonical;
- URL с UTM-метками и рекламными параметрами канонизируются на чистую версию;
- служебные параметры сортировки и отображения не создают отдельные канонические адреса;
- страницы фильтров индексируются только тогда, когда они действительно нужны как отдельные посадочные.
Если вам нужно не только настроить canonical, но и системно убрать дубли, служебные параметры и лишние URL, имеет смысл смотреть в сторону инструментов, которые помогают управлять SEO-логикой сайта на уровне WordPress. Например, Clearfy Pro от WPShop закрывает часть задач по чистке дублей и техническому SEO: https://wpshop.ru/plugins/clearfy?utm_source=wp7.ru&utm_medium=article&utm_campaign=canonical-v-wordpress-dlya-stranic-s-parametrami-i-dubljami
Но даже с плагином принцип остаётся тем же: canonical должен указывать на одну понятную основную версию страницы, а не маскировать ошибки в структуре URL. Если вы сначала разберёте, какие параметры меняют контент, а какие нет, настройка займёт меньше времени и не сломает индексацию.