删除主页上的Rel=Next,但不删除其他页面

时间:2016-07-16 作者:MitchellK

WordPress的大多数新模板都存在一个主要问题,需要您将主页设置为Your Latest Posts.

这是为了使许多伟大的主题功能能够工作。

问题是,wordpress核心和yoast seo也将首页(即使不是博客页面)视为页面实体。

那么这意味着什么呢?

你有一个主页www.mysite.com 如果您访问页面并查看您看到的源代码rel="next" href="hxxps://www.mysite.com/page/2/"

如果你真的点击了/page/2链接,你会看到它会把你带回到首页,除非这次你查看它现在的源代码rel="prev" href="hxxps://www.mysite.com/"rel="next" href="hxxps://www.mysite.com/page/3/"

如果单击链接/page/3/ 现在再次检查您将看到的源代码rel="prev" href="hxxps://www.mysite.com/page/2/"rel="next" href="hxxps://www.mysite.com/page/4/"

这种情况持续不断,最终用户永远看不到,但对搜索引擎来说非常糟糕,尤其是谷歌,因为谷歌可能会将其视为重复内容。

我已经就这个问题与Yoast进行了数周的支持会谈,他们坚称这是一个主题问题,并指责主题开发人员没有正确使用wp\\U排队。我认为这在很大程度上是正确的,但这也意味着绝大多数最流行的wordpress主题都有同样的问题。

目前唯一的解决方法是进入wordpress的阅读设置,并将首页设置为static page 和您的帖子页面your posts page. 很容易,但你失去了一个非常好的模板的所有功能,你只花了一周的时间定制,甚至花了很多钱。

因此,虽然这可能是一个解决方案,但它并不是真正的解决方案,而且似乎大多数主题开发人员都不知道如何解决这个问题。

我以前的主题Tempera有这个问题,我从GraphPaperPress 然后还尝试了一个最流行的主题Zerif 他们都有这个问题。

我在函数中尝试了各种代码片段。php和我可以让rel=next和rel=prev不显示在首页上,但它也不能在其他每一个页面上工作,比如/blog/page where you want这些元链接,以及所有类别页面上,这些页面也需要rel=next和rel=prev链接,以便告诉搜索引擎继续深入爬行。

我可以切换到静态首页,得到一个外观不错的首页,类似于主题动态首页,但功能丢失太多,不得不满足于更少,这相当令人沮丧,尤其是现在有这么多美妙的ajaxy和parallaxy功能。

那么,实际上是否有一个简单的函数可以将其仅从主页中删除,而将其显示在/blog//category1//category2这样的页面上呢/

这里有一些我已经尝试过了,但我只是没有得到正确的条件陈述,或者我做了一些其他错误的事情,但现在诊断这个问题太长了,我想我肯定是疯了。

function wpseo_disable_rel_next_home( $link ) {
  if ( is_home() ) {
    return false;
  }
}
add_filter( \'wpseo_next_rel_link\', \'wpseo_disable_rel_next_home\' );
以及

function genesis () {
if ( !is_home() || !function_exists( \'genesis\' ) )
            $this->adjacent_rel_links();
}
以及

if ( is_front_page() && is_home() )
{
remove_action( \'wp_head\', \'adjacent_posts_rel_link_wp_head\', 10, 0 );
remove_action(‘wp_head’, ‘cor_rel_next_prev_pagination’);
}
希望有人能解开这个谜。任何想要测试这个的人都可以下载Zerif主题,并确保也安装了Yoast。使用他们的动态首页系统,然后为单独的博客列表页面创建博客页面。

3 个回复
SO网友:NiteRaven

答案如下:

function bg_disable_front_page_wpseo_next_rel_link( $link ) {
    if ( is_front_page() ) {
        return false;
    }

    return $link;
}
add_filter( \'wpseo_next_rel_link\', \'bg_disable_front_page_wpseo_next_rel_link\' );
你必须返回$链接,如果你不返回任何内容,它将对每个页面禁用它。。。

SO网友:mlimon

我看到你已经尝试了wpseo\\u next\\u rel\\u link,可以再试一次。

function wpseo_disable_rel_next_hom () {
  if ( is_home() || is_front_page() ) {
    return \'\';
  }
}
add_filter(\'wpseo_next_rel_link\', \'wpseo_disable_rel_next_hom\');
据我所知,还有一件事不是Yoast SEO插件问题。您可以尝试使用WordPress默认主题,然后您将看到不同的主题。

SO网友:ytkah

add_filter( \'wpseo_next_rel_link\', \'__return_false\' );
在主题函数文件中添加代码