我试图在单个页面上禁用Wordpress Yoast SEO,因为它与其他插件冲突。
我尝试关注此StackOverflow question,将此代码添加到 functions.php :
add_action('template_redirect','remove_wpseo');
function remove_wpseo(){
if ( is_page(944)) {
global $wpseo_front;
remove_action( 'wp_head', array($wpseo_front, 'head'), 2 ); // <-- check priority
}
}
上面没有用,所以我跑过this post,尝试将其更改为下面,这当然导致500错误。
add_action('template_redirect','remove_wpseo');
function remove_wpseo(){
if ( is_page(5526)) {
global WPSEO_Frontend::get_instance()
remove_action( 'wp_head', array(WPSEO_Frontend::get_instance(), 'head'), 2 ); // <-- check priority
}
}
关于如何在一个页面上禁用Yoast SEO的任何想法?我应该从 functions.php 或其他地方执行此操作吗?我想我很接近,但不是很接近。
答案 0 :(得分:8)
好的,我弄清楚我做错了什么。以下是正在运行的更正代码:
add_action('template_redirect','remove_wpseo');
function remove_wpseo(){
if (is_page(5526)) {
global $wpseo_front;
if(defined($wpseo_front)){
remove_action('wp_head',array($wpseo_front,'head'),1);
}
else {
$wp_thing = WPSEO_Frontend::get_instance();
remove_action('wp_head',array($wp_thing,'head'),1);
}
}
}
谢谢!
答案 1 :(得分:1)
从Yoast 14.0版开始,他们已经更改了禁用Yoast SEO输出的方式。这是新方法。
add_action( 'template_redirect', 'remove_wpseo' );
function remove_wpseo() {
if ( is_page ( 5526 ) ) {
$front_end = YoastSEO()->classes->get( Yoast\WP\SEO\Integrations\Front_End_Integration::class );
remove_action( 'wpseo_head', [ $front_end, 'present_head' ], -9999 );
}
}
希望这会有所帮助!