WordPress安装Yoast SEO后标题重复怎么办

WordPress的免费主题一般都是不自带SEO功能的,但是SEO又是我们站长必做的一件事,因此绝大多数站长都会选择安装一款适合自己的SEO插件来解决网站优化上的问题。

就拿我这个博客来讲,选择的是Yoast SEO插件,选这个没有别的原因,只是因为它的下载量和评分都比较高,而且是免费的。

但是启用后就发现了问题,后台设置的站点标题和插件设置的标题重复显示了

当然也不能直接把后台设置的站点标题取消,因为这会影响前台的样式。

所以,还是老实找bug吧!

第一时间是排查问题源头,到底是插件问题还是主题问题。

为了确定这点儿,我在后台启用了另一个主题进行测试,发现一切正常,这就基本可以确定是主题的问题了。

和大多数人一样,为了省事儿,我第一时间百度了解决方法,但相关内容寥寥无几。

其中有一种方案是在“Yoast SEO-浏览外观”里面开启“强制重写标题”。

大多数情况下,开启这个功能问题就解决了,可我偏偏属于少数情况。

我的主题用这招不仅不管用,反而让问题变得更复杂了……

现在不仅标题重复,而且还产生了两个标题!

那就只能自己找原因了,首先找到定义<title>标签的模版文件,我的是header.php

可以看到这里定义了<title>标签,并定义了一些显示规则。

我比较了几个主题,大多数主题都不会直接把<title>标签写到页面模版中,而是会在functions.php文件中动态载入。

问题也就出在这儿,我的主题是静态写入的<title>,而静态写入的<title>默认是无法被插件覆盖的,因此会产生两个<title>

一般来说,在Yoast SEO插件中开启“强制重写标题”功能就能解决这个问题。

但我的主题静态写入的标题规则和插件的重写标题功能产生了冲突,所以开启重写也没有用,反而让问题更糟了。

找到问题之后,解决问题就变得简单了。

这里提供两种解决方案。

第一种:把模版里静态写入的<title>注释掉,然后在functions.php文件中动态载入<title>

具体操作是:打开functions.php文件,找到初始化函数,我的是twentyeleven_setup()这个函数,然后在函数中加入下面这条代码:

add_theme_support( 'title-tag' );

第二种:把模版里静态写入的<title>规则替换为:

<title><?php bloginfo( 'name' ); ?></title>

也就是说:只保留最基本的标题调用,其它的规则都去掉。

然后再在插件设置中开启“强制重写标题”功能。

以上两种方法用哪种都可以。

操作完成后,刷新重试。

OK!问题解决!