Как в Yoast SEO отключить пагинацию в канонических ссылках категорий и тегов

Как в Yoast SEO отключить пагинацию в канонических ссылках категорий и тегов

Есть такой замечательный Yoast SEO плагин от Yoast в репозитории WordPress. В нем имеется достаточно много функций удовлетворяющих большинство потребностей не продвинутого (а может даже и продвинутого СЕО специалиста).

Но речь сейчас пойдет не о его функциональных возможностях и преимуществах перед другими похожими плагинами. А о пагинации в канонических ссылках тегов и категорий.

То такое канонические ссылки и для чего они нужны. Страница гугл-документации говорит нам следующее:

Каноническим называется URL страницы, которую роботы Google считают главной среди нескольких ее вариантов на вашем сайте. Например, если одна и та же страница размещена по нескольким URL, таким как example.com?dress=1234 и example.com/dresses/1234, одна из версий будет выбрана в качестве канонической. Учтите, что страницы могут быть не полностью одинаковыми и относиться к разным доменам.

Яндекса и прочих, это так же касается.

Вернемся к плагину Yoast. По умолчанию, ссылки пагинации тегов и категорий имеют следующий вид:

<link rel="canonical" href="http://wordpress.l/category/bez-rubriki/page/2/" />
<link rel="canonical" href="http://wordpress.l/tag/teg1/page/2/" />

Что на СЕО влияет не лучшим образом. А лучше, когда они ссылаются на главную страницу рубрики или тега, да и любой кастомной таксономии если таковы используются на вашем сайте (хотя все не однозначно и зависит от функционала сайта). Т. е. будут иметь такой вид:

<link rel="canonical" href="http://wordpress.l/category/bez-rubriki/page/" />
<link rel="canonical" href="http://wordpress.l/tag/teg1/page/" />

Что бы это реализовать, нам нужно обратиться к документации Yoast данного плагина. В которой, не однократно упоминался фильтр «wpseo_canonical». Что же, попробуем использовать его для улучшения нашей ситуации. Для этого напишем следующий код:

add_filter('wpseo_canonical', function($canonical) {

	if(is_category() && is_paged())
	{
		$Term = get_term_by('id', get_query_var('cat'), 'category');
		return get_category_link($Term -> term_id);
	}
	elseif(is_tag() && is_paged())
	{
		$Term = get_term_by('slug', get_query_var('tag'), 'post_tag');
		return get_tag_link($Term -> term_id);
	}
	
	return $canonical;
}, 10, 1);

Что он делает:

  1. Проверяет на какой странице мы сейчас находимся — категории или теги. И является ли эта страница не первой, т. е. 2, 3, 4, и последующей.
  2. Получаем данные термина по заданным параметрам. Для этого используем WP функцию «get_term_by()»
  3. Получаем ссылку на главную страницу термина, для категории - «get_category_link()», а для тегов - «get_tag_link()»
  4. Для любой другой страницы, возвращаем каноническую ссылку сформированную плагином по умолчанию.
Как в Yoast SEO отключить пагинацию в канонических ссылках категорий и тегов
Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *