Изменение Canonical в Yoast SEO для страниц пагинации ( Woocommerce и подобных)

Если ваш интернет-магазин на WordPress и плагине Woocommerce или просто на сайте где есть пагинация в качестве SEO плагина использует Yoast вы можете столкнуться с особенностью формирования тега canonical для пагинации архивных страниц. А именно страницы пагинации меток, категорий и витрины магазина Main shop page и подобные им содержат примерно такой код:

<link rel="canonical" href="https://www.вашсайт.ru/shop/page/2/" />
     <link rel="prev" href="https://www.вашсайт.ru/shop/" />
     <link rel="next" href="https://www.вашсайт.ru/shop/page/3/" />

Другими словами страница пагинации в качестве канонического адреса содержит ссылку на саму себя. Разработчики Yoast объясняют это тем, что поисковые машины понимают, что это именно страница пагинации, а не дубль первой страницы, так как следующие за ней теги rel=»next» and rel=»prev» прямо на это указывают. Сеошники считают это вполне нормальным для Google, но не для Яндекс. Яндекс может посчитать такие страницы дублями со всеми вытекающими последствиями.

 

[embedyt] https://www.youtube.com/watch?v=W5syj1i0NWo[/embedyt]

Если seo специалист требует сделать каноникал страниц пагинации main page shop, категорий и меток Woocommerce и других пагинаций как ссылку на первую страницу, вставьте следующий код в файл functions.php вашей темы:

Канонический адрес на первую страницу для страниц пагинации категорий и меток

add_filter('wpseo_canonical', 'removeCanonical');
function removeCanonical($link) {
  $link = preg_replace('#\\??/page[\\/=]\\d+#', '', $link);
  return $link;
}

В примере выше мы использовали фильтр плагина Yoast SEO wpseo_canonical. И с помощью регулярных выражений и функции preg_replace убрали лишнее 🙂

 Канонический адрес на страницу shop

function yoast_seo_canonical_change_woocom_shop( $canonical ) {
   if ( !is_shop() ) {
     return $canonical;
   }
   return get_permalink( woocommerce_get_page_id( 'shop' ) );
}
add_filter( 'wpseo_canonical', 'yoast_seo_canonical_change_woocom_shop', 20, 1 );

данный код можно обнаружить на многих сайтах по wordpress как не рабочий. На самом деле он рабочий, если указан приоритет более 10, например 20 как в примере выше.

источник