Изменение 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 как в примере выше.