Так получилось, что у меня более тысячи тегов на сайте и тонна категорий. Yoast SEO позволяет вручную установить canonical для каждой из этих таксономий, но что делать если у вас 10 таких сайтов, 20? Вручную тут вопрос решать было бы не разумно. Давайте напишем функцию.

Как глобально поставить canonical на страницах пагинации, тегах, категориях Yoast SEO

Так получилось, что у меня более тысячи тегов на сайте и тонна категорий. Yoast SEO позволяет вручную установить canonical для каждой из этих таксономий, но что делать если у вас 10 таких сайтов, 20? Вручную тут вопрос решать было бы не разумно. Давайте напишем функцию.

Логика тут будет простая, мы не ставим больше каноникл вручную

А вместо этого в коней файла functions.php вставляем следующий код:

function prefix_filter_canonical_tags($canonical)
{
if (is_tag() || is_tax('attributes')) {
$reg = "/\/page\/\d*/";
return preg_replace($reg, "", $canonical);
}
return $canonical;
}

add_filter('wpseo_canonical', 'prefix_filter_canonical_tags');

is_tag() это проверка на тег,  is_tax('attributes') - это кастомная таксономия, аналогичные методы есть и для страниц и для постов и для категорий.

Мы проверяем является ли текущий шаблон тегом или кастомной таксоносией, и если да - меняем (скорее обрезаем) ссылку.

Регулярка в коде вырезает из строки все что касается пагинации, и возвращает нам значение. Его то мы и подставляем в canonical. И в принципе это все. 

Как вариант все это можно оформить в виде плагина для WordPress, займет еще пару минут (в интернете много статей как это сделать). И тогда эту функцию можно будет включать или отключать с админки как обычный плагин.