最近发现Yoast WordPress SEO插件老是在更新,当然更新也不是说不好,但频繁更新就说明问题有点多,经常在修复,而且不稳定,总是打补丁,这让我感觉很郁闷,因为我现在用了这个插件,很多文章已经被收录,如果插件一有变动,就会导致文章页的关键字,描述等也发生变化,到时候被百度惩罚就麻烦了。我决定以后要少升级这个插件。

其实上次也碰到过类似的问题,就是这个插件把我文章页的标题强制重写了,而且写的还是站点标题,然后就导致所有文章的标题都是站点标题,在浏览器打开多个标签后就蒙了。。。更坑爹的是,就这样的文章还被百度收录了不少,用关键字能搜到结果,但标题却是站点标题,必然导致少了不少流量。如图:

wordpress seo

那么来谈谈这次我遇到的问题,首先我不知道这个问题是什么时候出来的,可能是我今天升级了插件引起的,当然也有可能之前就有,这个问题是,页面的标题出现了2次站点标题,如图:wordpress seo

首先我自然认为是Loper主题的问题,谁让我没用正版(但正版已经售完,我很想支持),没法让作者技术支持,只好自己动手改。首先找到主题的header.php文件:

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
	<title><?php if ( is_tag() ) {
			//echo wp_title('Tag:');if($paged > 1) printf(' - 第%s页',$paged);echo ' | '; bloginfo( 'name' );
			echo 'Tag: ' ; echo wp_title('');if($paged > 1) printf(' - 第%s页',$paged);echo ' | '; bloginfo( 'name' );
		} elseif ( is_archive() ) {
			echo wp_title('');  if($paged > 1) printf(' - 第%s页',$paged);    echo ' | ';    bloginfo( 'name' );
		} elseif ( is_search() ) {
			echo '"'.wp_specialchars($s).'"的搜索结果 | '; bloginfo( 'name' );
		} elseif ( is_home() ) {
			bloginfo( 'name' );$paged = get_query_var('paged'); if($paged > 1) printf(' - 第%s页',$paged);
		}  elseif ( is_404() ) {
			echo '页面不存在! | '; bloginfo( 'name' );
		} else {
			//echo wp_title( ' | ', false, right )  ; bloginfo( 'name' );
			echo wp_title('');echo ' | ';    bloginfo( 'name' );
		} ?></title>

其中注释掉的是默认的,再来说说我为什么把他注释掉,显然这里调用了wp_title这个函数,但却没有达到期望的效果,比如注释掉的Tag那一行,返回的结果并没有Tag字样,很奇怪,然后我想去找wp_title这个函数,杯具的是没找到,如果哪个读者找到了,请告诉我一声,多谢了。

然后我看了Yoast WordPress SEO插件的设置,我关闭了强制重写选项,因为我想用主题默认的,当然如果你开启了,那用的title自然是插件生成的,也就是没有什么问题的。但是最近插件的不稳定表现让我觉得不能把重要的任务交给他,所以还是要由Loper主题来完成。我找到插件关于标题的相关设置:

wordpress seo

把相关的全部清空,尝试了一下,发现出现了站点标题出现2次的问题,看来是这个挫插件把我的wp_title函数给覆盖了,在面向对象语言里好像叫对象方法被重写(呵呵,我好久没用面向对象语言了),而且就算你填空的,他也会把默认的填上来,就是title+网站标题,好吧,那我只能填上title参数,让这个方法只返回原始的标题,然后还需要改对于主题中的代码,上面已经贴出来了。大家可以在我的站打开几个页面看一下。

当然我还是建议不太会修改程序的人直接用插件的重写功能,这样只要你的插件运行正常,其他主题乱写标题,描述都会被插件覆盖掉,并使用插件设置的格式重写标题。