Канонические ссылки в Yoast SEO без пагинации — удаление /page/2

17.11.2021

Если вам требуется всегда указывать тег rel="canonical" на первую страницу пагинации в категориях и архивах, то есть:
<link rel="canonical" href="https://website.ytcolor.ru/articles/" />

вместо
<link rel="canonical" href="https://website.ytcolor.ru/articles/page/2" />
с установленным плагином yoast seo, то просто вставьте в файл functions.php вашей темы данный фильтр:

//canonical url first page

add_filter('wpseo_canonical', 'my_wpseo_canonical');
function my_wpseo_canonical($canonical) {
    if (is_paged()) {
        if (is_home()) {
            return home_url();
        }

        if (is_archive()) {
            $url = get_term_link(get_queried_object_id());
            return $url;
        }        
    }
    return $canonical;
}

Произвольный тип записи и его Архив

На случай, если нужно также применить canonical и для страниц архивов произвольного типа записи (custom post type):

//canonical url first page with custom post type

add_filter('wpseo_canonical', 'my_wpseo_canonical');
function my_wpseo_canonical($canonical) {
    if (is_paged()) {
        if (is_home()) {
            return home_url();
        }

        if (is_category()) {
            $url = get_term_link(get_queried_object_id());
            return $url;
        }
        elseif (is_post_type_archive('portfolio')) {
            $url = home_url() . '/portfolio/';
            return $url;
        }

    }

    return $canonical;
}

Например, ваш произвольный тип записи имеет slug portfolio, а страница архива включена с помощью 'has_archive' => true, указываем URL /portfolio/ (или же иное, если изменяли слаг через rewrite)

Для определения нахождения пользователя на архивной странице записей произвольного типа — используем is_post_type_archive($post_types)

Данный код актуален и для мультиязычности polylang.