【问题标题】:Can't remove canonical link in WordPress with Yoast SEO Plugin无法使用 Yoast SEO 插件删除 WordPress 中的规范链接
【发布时间】:2017-06-06 04:17:29
【问题描述】:

所以我试图删除分页页面的 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 &gt;= 2) : 中的代码会运行,因为这个标签&lt;meta name="robots" content="noindex,follow"&gt; 在头部。

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

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

干杯

【问题讨论】:

  • 您必须找出负责插入代码的原因并采取相应措施。您从哪里得知wpseo_canonical 过滤器是您可以使用的过滤器?
  • 嗨@josephting 我正在使用 yoast seo 插件,所以根据他们的API 我使用add_filter( 'wpseo_canonical', '__return_false' ); 删除规范。但它不起作用
  • 也许其他东西正在打印它。在不知道您使用的插件和/或主题的情况下,不可能查明原因。由于您已经应用了适当的过滤器来删除由 yoast 插入的规范链接以及本机 rel_canonical 操作,因此可能还有其他东西正在插入规范链接。由于rel_canonical 也被添加到embed_head 操作中,它可能不起作用,但也尝试添加remove_action('embed_head', 'rel_canonical')
  • @josephting 使用 remove_action('embed_head', 'rel_canonical') 彻底破坏了网站。现在也加载不出来了。幸运的是我在 localhost 上开发
  • 除非您忘记了冒号 (;),否则它不应该破坏网站。

标签: php wordpress wordpress-hook yoast


【解决方案1】:

经过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);

【讨论】:

  • 工作愉快。谢谢 m8
【解决方案2】:

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

add_action('init', function() {

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

});

【讨论】:

    【解决方案3】:

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

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

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

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

    删除规范网址:

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

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

    【讨论】:

      【解决方案4】:

      我知道我迟到了,但为了正确实施,您需要直接运行 '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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-26
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多