Плагин Yoast SEO доработка вывода тегов “каноникал” и “robots”

Sorry, this entry is only available in Russian.

Техническое задание.

Очередные проблемы после обновления плагина Yoast SEO, в индекс Гугла урлы лишние попали, пример:
https://yablukom.ua/semena-podsolnechnika/page/2/?orderby=price-desc , каноникал должен быть https://yablukom.ua/semena-podsolnechnika/ Касается всех урлов с параметрами и пагинацией на категориях товаров, а еще с таких страниц надо убрать тег
<meta name=”robots” content=”index, follow” /> т.к. он стоит выше каноникла и имеет приоритет.

Вот с сортировкой видно всплеск страниц с параметрами в индексе если верить отчетам search console

 

search console canonical robots errors
там и параметры и пагинация + параметры, все с параметром, который начинается на ?orderby=
 
Расписываю подробнее )
На страницах с параметрами сортировки необходимо убрать meta name robots, а каноникал указать на родительский url
canonical robots errors
для примера со скрина это будет https://yablukom.ua/semena-podsolnechnika/  (без параметра сортировки и пагинации).
Доработка должна работать с учетом языковых версий, то есть на странице сортировки ua-версии каноникал должен быть на https://yablukom.ua/ua/semena-podsolnechnika/

 

Выполнение задания.

Немного порывшись в интернете нашел интересную документацию по хукам плагина Yoast SEO Version 4.7.1, и она мне сильно помогла в написании фильтров под нужды заказчика.

Yoast SEO Filters By Team Yoast http://hookr.io/plugins/yoast-seo/4.7.1/filters/#index=a

Я дописал две функции в  functions.php, подключил их к нужным фильтрам плагина Yoast SEO, которые решили все проблемы заказчика.

 


//23.09.2020 Удаляем meta name="robots" для страниц с пагинацией и с параметрами типа filters, orderby
function an_filter_robots( $robots ) {
    if (is_paged() || (count($_GET) > 0)) {
        $robots = ''; 
        }
    return $robots;
  }
add_filter( 'wpseo_robots', 'an_filter_robots', 10, 1 );

//23.09.2020 Изменяем link rel="canonical" для страниц с пагинацией и с параметрами типа filters, orderby
function an_filter_canonical_pagenum( $canonical ) {
    $canonical = parse_url(get_pagenum_link(0));
    $canonical = $canonical['scheme'] . '://' . $canonical['host'] . $canonical['path'];
    return $canonical;
 }
add_filter( 'wpseo_canonical', 'an_filter_canonical_pagenum',10, 1 );

На странице https://yablukom.ua/semena-podsolnechnika/?filters=fakticheskaya-urozhaynost[2992]&orderby=price-desc видно, что canonical нормальный, а тега robots нет:

canonical правильный и robots нет

а на основной  https://yablukom.ua/ua/semena-podsolnechnika/ тег robots  присутствует, а также в canonical есть языковой домен:

canonical и robots правильные, есть язык

Вот скриншот отзыва заказчика:

Отзыв заказчика из Телеграмм