无法使用 Yoast SEO 插件删除 WordPress 中的规范 link

Can't remove canonical link in WordPress with Yoast SEO Plugin

所以我试图删除 WordPress header 中用于分页页面的规范 link,但我尝试的所有建议均无效。

这是我的 functions.php 文件中的代码:

function my_add_noindex_tags(){
    $paged = intval( get_query_var( 'paged' ) );

    if(is_search() || is_404() ) :
        echo '<meta name="robots" content="noindex,follow">';
    endif;

    if ($paged >= 2) :
        add_filter( 'wpseo_canonical', '__return_false', 10, 1 );

        remove_action('wp_head', 'rel_canonical');

        echo '<meta name="robots" content="noindex,follow">';
    endif;
}
add_action('wp_head','my_add_noindex_tags', 4 );

我知道 if ($paged >= 2) : 中的代码运行是因为此标记 <meta name="robots" content="noindex,follow"> 位于头部。

谁知道我可能哪里出错了。

这里的问题是 Yoast SEO 添加的规范 link 没有按预期正确删除。

干杯

经过 Yoast SEO codes 之后,规范操作似乎已添加到 wpseo_head 操作中。

您要么在将函数添加到 wp_head 中的 运行 时使用优先级 1 以使其正确执行,要么使用下面的适当方法来执行。使用 wpseo_head 操作。

function remove_canonical() {
    $paged = intval( get_query_var( 'paged' ) );

    if ($paged >= 2) {
        add_filter( 'wpseo_canonical', '__return_false', 10 );
    }
}
add_action( 'wpseo_head', 'remove_canonical', 4);

对我来说,仅将此添加到 init 操作就有效了

add_action('init', function() {

   add_filter( 'wpseo_canonical', '__return_false', 10 );

});

所有这些答案对我没有帮助,我找不到适合我的场景的正确答案:

我必须将优先级设置为高于 10,因为显然 Yoast 将 url 更改为优先级 10,因此如果您想更改其 url,则必须设置更高的优先级:

使用自定义函数更改规范 url:

add_filter( 'wpseo_canonical', 'change_canonical', 20 );

删除规范url:

add_filter( 'wpseo_canonical', '__return_false', 20 );

请注意,如果您不设置优先级,它将使用默认优先级 10,并且它将不起作用。

我知道我迟到了,但为了正确实施,您需要 运行 'wpseo_canonical' 直接过滤:

function remove_canonical_pagination() {
    $paged = intval( get_query_var( 'paged' ) );

    if ($paged >= 2) {
        return false;
    }
}
add_action( 'wpseo_canonical', 'remove_canonical_pagination', 4);