【问题标题】:Disable Wordpress Yoast SEO on Single Page在单页上禁用 Wordpress Yoast SEO
【发布时间】:2020-06-10 11:50:42
【问题描述】:

我正在尝试在单个页面上禁用 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 还是其他地方执行此操作?我想我很接近,但并不完全在那里。

【问题讨论】:

  • “当然”导致 500 错误?错误是什么?我猜global WPSEO_Frontend::get_instance() 的语法无效。
  • 我不知道具体的错误,但 Chrome 说服务器无法访问。但是,是的,可能是语法问题。
  • 如果您收到 500 错误,您需要查阅服务器的日志以了解详细信息。
  • 这是真的。不幸的是,我只能访问 Wordpress 和 FTP。这不是我的服务器。 (属于朋友的朋友)。但是,500 错误不是当前问题,因为我删除了错误代码后,它不再抛出 500 错误。我只是想按照我作为指南提供的两个链接来确定禁用 Yoast SEO 的更好方法。
  • @Dodinas 如果您可以访问 FTP,那么您应该在 wp-config.php 中将 WP_DEBUG 和 WP_DEBUG_LOG 设置为 true,然后访问日志以确定确切的问题。

标签: php wordpress


【解决方案1】:

好的,我知道我做错了什么。这是正在工作的更正代码:

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);
            }
    }
}

谢谢!

【讨论】:

  • 这似乎对我不起作用。无论如何你可以重温一下吗?
  • @smack-a-bro 查看我的答案。希望对你有帮助! :)
【解决方案2】:

从 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 );
    }
}

希望这会有所帮助!

【讨论】:

  • 当心,如果被 Yoast 过滤,文档标题 html 标记也会被删除。
  • 此解决方案帮助我解决了 WPSEO_Frontend 严重错误。谢谢!
猜你喜欢
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多