1

所以我试图删除分页页面的 WordPress 标题中的规范链接,但我尝试的所有建议都不起作用。

这是我的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">在 head 部分。

任何人都知道我可能会出错。

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

干杯

4

4 回答 4

1

在浏览了Yoast SEO 代码后,似乎将规范操作添加到wpseo_head操作中。

在添加要运行的函数时,您要么必须使用优先级 1wp_head才能使其正确执行,要么使用下面的适当方法,即。使用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);
于 2017-06-06T05:46:55.033 回答
0

对我来说,只有将它添加到 init 操作才有效

add_action('init', function() {

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

});
于 2020-10-07T13:14:57.050 回答
0

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

我必须将优先级设置为高于 10,因为显然 Yoast 将 url 更改为优先级 10,所以如果你想更改他们的 url,你必须设置更高的优先级:

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

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

删除规范网址:

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

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

于 2021-09-29T11:37:29.260 回答
0

我知道我迟到了,但为了正确实施,您需要直接运行“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);
于 2021-10-28T12:02:07.790 回答