Изменение 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, но не для Яндекс. Яндекс может посчитать такие страницы дублями со всеми вытекающими последствиями.

 

YouTube player

Если 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 как в примере выше.

источник