无法使用 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);
所以我试图删除 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);