Канонические ссылки для постраничной навигации + Плагин
Практически на каждом сайте, будь это интернет магазин, личный блог, или сайт статейник, используется постраничная навигация. Есть админы сайтов, которые в robots.txt запрещают индексировать такие страницы, либо отключают пагинацию, но на самом деле они нужны для индексациии сайта.
Поисковая система Яндекс в своём справочнике писала как бороться с подобными страницами, ведь контент на них очень часто дублируется, что негативно сказывается на продвижение.
Яндекс предлагает на страницах вида /page/1/, /page/3/ указывать специальный тэг, в котором указана основная индексируемая страница.
Например с постраничной навигации разделов (http://сайт/ссылка на раздел/page/2), ссылаться на главную раздела
<link rel="canonical" href="http://сайт/ссылка на раздел/" />
Если постраничная навигации на Главной (http://сайт/page/5/)
<link rel="canonical" href="http://сайт/" />
Как сделать на WordPress?
Я не буду подробно объяснять данный код, просто расскажу как он работает. Когда роботы поисковых систем, или посетитель ходит по сайту, работает функция get_query_var , которая проверяет на какой странице пагинации мы находимся.
Если зашли в категорию, или на главную, то get_query_var вернёт значение «0», но стоит перейти на 1, вторую, третью страницу, скрипт начинает свою работу.
Фкнции:
is_category — Функция определяет находится ли посетитель в рубрике
is_home — Если это главная страница
get_category_link — возвращает URL рубрики по ID категории
get_option — функция возвращает данные из БД по названию настройки
А теперь сам код, который нужно внедрить в файл function.php
//С помощью хука wp_head добавим новые строчки в заголовки сайта add_action('wp_head','add_cannonical'); function add_cannonical(){ if( get_query_var('paged')>0 ){ if(is_category()){ //Вытащим из объекта, ID текущей категории $cat_id=get_queried_object()->term_id; //Получаем ссылку на данную категорию $link=get_category_link( $cat_id ); //Добавляем в header новый тег echo "<link rel=\"canonical\" href=\"".$link."\" />"; }elseif( is_home() ){ //Достаём из базы данных ссылу на основной сайт $link=get_option('siteurl'); //Добавляем в header новый тег return "<link rel=\"canonical\" href=\"".$link."\" />"; } } }
Для тех кто боится трогать файл function.php, я создал плагин на классе «Add Tag Canonical», просто загрузите его в папку с плагинами и активируйте. Плагин так же работает с дополнением woocommerce.