Как настроить canonical в WordPress вручную

Если на отдельной странице, записи или архиве WordPress стоит неправильный canonical, поисковик может выбрать не ту версию URL: с параметрами, со слэшем или без него, с пагинацией, с фильтром или дублирующей страницей. В таких случаях canonical лучше задать вручную, но делать это нужно аккуратно, чтобы не спорить с SEO-плагином и не получить два разных канонических адреса в коде.

Ниже разберём, когда ручная настройка действительно нужна, где именно её задавать и как проверить, что на странице остался только один корректный canonical.

Когда canonical в WordPress приходится задавать вручную

В обычной установке WordPress canonical формируется автоматически. Это нормально для большинства записей, страниц и архивов. Ручная правка нужна, когда автоматический адрес не совпадает с тем URL, который вы хотите считать основным.

Типичные ситуации:

  • у записи есть несколько доступных URL, а в canonical указан не тот вариант;
  • на странице с фильтрами или параметрами сортировки canonical указывает на URL с параметрами, хотя основная версия должна быть без них;
  • у пагинированного архива canonical ведёт не туда, куда нужно для конкретной страницы архива;
  • SEO-плагин подставляет canonical на основе шаблона, но для отдельной записи нужен другой адрес;
  • на сайте есть дубли из-за старой структуры ссылок, редиректов или нестандартных шаблонов.

Если проблема затрагивает сразу весь сайт, сначала проверьте настройки постоянных ссылок, редиректы и SEO-плагин. Ручной canonical — это точечное решение, а не замена нормальной структуре URL.

Где WordPress берёт canonical по умолчанию

Сам WordPress выводит canonical через функцию rel_canonical() в <head>. Во многих темах она уже подключена, а SEO-плагины часто заменяют или дополняют стандартный вывод своим вариантом. Именно здесь чаще всего и возникают конфликты: в коде оказывается два тега rel="canonical" или плагин перезаписывает нужный вам адрес.

Перед ручной настройкой посмотрите исходный код страницы и найдите строку с canonical. Если тег уже есть, важно понять, кто его выводит: ядро WordPress, тема или SEO-плагин. Это влияет на способ исправления.

Самый надёжный способ: задать canonical через SEO-плагин

Если на сайте уже стоит Yoast SEO, Rank Math, AIOSEO или другой SEO-плагин, сначала используйте его встроенное поле canonical. Это безопаснее, чем править шаблон темы, потому что плагин обычно сам управляет выводом тега и не создаёт дубликат.

В большинстве SEO-плагинов canonical можно задать:

  • в редакторе записи или страницы;
  • в настройках отдельного архива, если плагин умеет работать с таксономиями и архивами;
  • через шаблонные настройки для типа записей, если нужен один и тот же canonical для группы страниц.

Смысл простой: вы не добавляете новый тег вручную в тему, а меняете значение в том месте, где плагин уже ожидает эту настройку. Это снижает риск конфликта.

Если в SEO-плагине есть поле canonical, заполняйте только его и не добавляйте второй тег через код темы или отдельный плагин. Два canonical на одной странице — частая ошибка, из-за которой поисковик может проигнорировать оба.

Как задать canonical вручную через код

Если SEO-плагина нет или он не даёт нужной гибкости, canonical можно вывести через хук wp_head. Этот вариант подходит для точечных случаев: одной записи, страницы, архива или шаблона. Перед изменениями сделайте резервную копию файла или работайте в дочерней теме, иначе обновление темы затрёт правку.

Для конкретной страницы или записи можно добавить код в functions.php дочерней темы или в собственный мини-плагин:

add_action('wp_head', function () {
    if (is_page(123)) {
        echo '<link rel="canonical" href="https://example.com/your-page/" />' . "\n";
    }
});

Здесь 123 — ID страницы. Вместо него можно использовать другие условные теги WordPress, например is_single(), is_singular('post'), is_category() или is_tax(), если нужно настроить canonical для записи, рубрики или таксономии.

Но есть важный нюанс: если WordPress или SEO-плагин уже выводит canonical автоматически, ваш код добавит ещё один тег. Поэтому перед таким способом нужно либо отключить стандартный вывод, либо использовать настройку плагина, либо фильтр, который меняет существующее значение, а не добавляет новый тег поверх него.

Как заменить canonical, а не дублировать его

Если на сайте используется стандартный canonical WordPress, лучше не печатать новый тег вручную, а изменить уже готовый через фильтр get_canonical_url. Это более чистый вариант: WordPress получит ваш URL и выведет только один canonical.

Пример для одной записи:

add_filter('get_canonical_url', function ($canonical, $post) {
    if ($post instanceof WP_Post && $post->ID === 123) {
        return 'https://example.com/your-page/';
    }

    return $canonical;
}, 10, 2);

Этот подход работает, если canonical формирует именно WordPress. Если его перехватывает SEO-плагин, фильтр ядра может не помочь — тогда нужно искать фильтр самого плагина или использовать его встроенное поле canonical.

Для архивов и таксономий логика похожая, но условия будут другими. Например, можно проверять is_category() или is_tax() и возвращать нужный адрес для конкретного архива. Главное — не смешивать несколько способов сразу.

Что делать, если canonical нужен для архива или страницы с параметрами

Для архивов canonical обычно должен вести на чистый основной URL архива без лишних параметров. Это особенно важно для страниц с сортировкой, фильтрами и UTM-метками. Если canonical указывает на URL с параметрами, поисковик может считать такие адреса отдельными страницами.

Практически это решается так:

  • для обычного архива оставляете canonical на базовый URL категории, тега или таксономии;
  • для страниц с параметрами сортировки canonical указывает на исходную страницу без query string;
  • если параметр меняет содержимое существенно и вы хотите индексировать именно его, canonical должен вести на саму версию с параметром, а не на базовую страницу.

Здесь важно не путать canonical и редирект. Canonical подсказывает поисковику предпочтительный адрес, но не убирает дубль из браузера. Если страница с параметрами вообще не нужна пользователю и поиску, обычно правильнее настроить 301-редирект или закрыть её от индексации, а не пытаться лечить всё canonical.

Как проверить, что canonical настроен правильно

После правки откройте страницу в браузере и посмотрите исходный код. В HTML должен быть один тег вида <link rel="canonical" href="..." />. Если их два, значит один выводит тема, а второй — плагин или ваш код.

Проверяйте не только наличие тега, но и сам адрес:

  • протокол должен совпадать с основным вариантом сайта — https;
  • домен должен быть один и тот же, без зеркал;
  • URL должен быть в той форме, которую вы считаете основной: со слэшем или без него, без лишних параметров;
  • для архивов canonical должен вести на нужную страницу архива, а не на главную или соседнюю страницу пагинации.

Если используете SEO-плагин, проверьте ещё его предпросмотр сниппета или настройки конкретной записи. Иногда поле canonical заполнено в интерфейсе, но в коде остаётся старое значение из кэша страницы, CDN или плагина кеширования.

Частые ошибки при ручной настройке

Самая распространённая ошибка — добавить canonical вручную, не отключив автоматический вывод. В итоге на странице два тега, и это хуже, чем один неправильный.

Ещё несколько типичных проблем:

  • canonical ведёт на URL, который сам отдаёт 404 или редирект;
  • в canonical указан адрес с UTM-метками или другими параметрами;
  • для пагинации всех страниц архива задан один и тот же canonical на первую страницу, хотя это не всегда подходит для конкретной структуры сайта;
  • правка внесена в родительскую тему, а после обновления исчезла;
  • canonical меняют в коде, но не очищают кеш страницы или CDN, поэтому в браузере виден старый вариант.

Если сайт работает на кэширующем плагине, после изменений очистите кеш страницы и, при наличии, кеш на стороне хостинга или CDN. Иначе проверка может показать старый HTML.

Когда лучше не трогать canonical вручную

Если проблема не в одной-двух страницах, а в массовом шаблоне URL, сначала исправьте источник дублей: структуру постоянных ссылок, настройки SEO-плагина, фильтры, редиректы или шаблон темы. Ручной canonical не должен маскировать системную ошибку.

Также не стоит вручную задавать canonical, если вы не уверены, какой URL должен быть основным. В таком случае сначала определите канонический адрес по логике сайта: какой вариант открывается без параметров, какой используется в меню, какой отдаёт 200 OK и какой должен индексироваться.

Если нужен именно точечный контроль над дублями, а не полная перенастройка SEO, удобно работать через встроенные возможности SEO-плагина или через фильтр get_canonical_url в дочерней теме. Так вы не ломаете шаблон и сохраняете управляемость при обновлениях.

Как отключить emoji в WordPress через код и плагин
25.09.2026
Как настроить canonical в WordPress вручную
11.10.2026
Как отключить REST API в WordPress для гостей
20.10.2026
Как убрать из индекса страницы вложений и медиафайлов в WordPress
17.10.2026
Как защитить страницу входа в WordPress от брутфорса
28.10.2026