解决wordpress插件All in One SEO Pack不显示meta描述

我的博客使用了最新的 All in One SEO Pack 1.6.8.1 作为SEO插件,个人感觉这款插件还是很不错的,特别是google,我几乎上午发布一篇文章,下午或者第二天就被收录了。但是我也发现了文章页面一个问题,就是每篇文章都没有通过截取文章前若干文字而产生meta 的 description标签,这对搜索引擎还是比较重要的。可是我明明在后台的“All in One SEO”设置里勾选了“Autogenerate Descriptions”这一项,既然选择了自动添加描述,可是为什么没有“自动”呢?带着这个问题,我查看了这款插件的源代码,进行了一部分修改,解决了这个问题。

打开你的插件安装目录,我的是“wp-content\plugins\all-in-one-seo-pack”,需要注意的是,为了避免修改对文件编码造成破坏,请使用editplus等软件对源代码进行修改。打开“aioseop.class.php”这个文件。以下所有修改都是针对该文件进行的,请事先做好备份。该修改仅对最新的1.6.8.1版本有效,其他版本我没有进行试验。

中文的汉字就是以UTF-8形式来存储,每个汉字将会占三个字节,插件作者并没有考虑到中文的问题,默认是对英文截取、如果按照原先的长度来截取中文的话是非常短的,所以我们适当增加截取的长度,一般来说建议META Description信息在100~150字最佳,乘以3,就是在300到450之间,我这里把原来默认的最大160改成350,最小的1改成180,具体情况,视自己的需求而定。

查找源代码:

var $maximum_description_length = 160;

修改为:

var $maximum_description_length = 350;

查找源代码:

var $minimum_description_length = 1;

修改为:

var $minimum_description_length = 180;

为了获得更好的对中文截取的支持,需要修改原来的截取的字符函数,查找源代码:

trim_excerpt_without_filters($text)

将整个函数体:

function trim_excerpt_without_filters($text) {
	$text = str_replace(']]>', ']]>', $text);
             $text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text );
	$text = strip_tags($text);
	$max = $this->maximum_description_length;

	if ($max < strlen($text)) {
		while($text[$max] != ' ' && $max > $this->minimum_description_length) {
			$max--;
		}
	}
	$text = substr($text, 0, $max);
	return trim(stripcslashes($text));
}

整体替换为:

function trim_excerpt_without_filters($text) {
	$text = str_replace(']]>', ']]>', $text);
	$text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text );
	$text = strip_tags($text);
	$max = $this->maximum_description_length;

	if (ord($text[$max])>0x7f && ord($text[$max])<0xc0){
		while(ord( $text[$max])<=0xc0) {
			$max --;
		}
	}
	$text = substr($text, 0, $max);
	return trim(stripcslashes($text));
}

查找源代码:

if (isset($description) && (strlen($description) > $this->minimum_description_length) && !(is_home() && is_paged()))

修改为:

if (isset($description) && (strlen($description) >= $this->minimum_description_length) && !(is_home() && is_paged()))

至此,打开文章页查看源代码,已经有meta description的标签了。但是里面有一段“<!– All in One SEO Pack…”开始的注释让人感觉很不爽,干脆注释掉:

查找源代码:

echo "\n&lt;!-- All in One SEO Pack $this->version by Michael Torbert of Semper Fi Web Design";

将原来的源代码:

echo "\n&lt;!-- All in One SEO Pack $this->version by Michael Torbert of Semper Fi Web Design";
if ($this->ob_start_detected) {
	echo "ob_start_detected ";
}
echo "[$this->title_start,$this->title_end] ";
echo "--&gt;\n";

整体修改为:

//echo "\n&lt;!-- All in One SEO Pack $this->version by Michael Torbert of Semper Fi Web Design";
//if ($this->ob_start_detected) {
//	echo "ob_start_detected ";
//}
//echo "[$this->title_start,$this->title_end] ";
//echo "--&gt;\n";

查找源代码:

echo "&lt;!-- /all in one seo pack --&gt;\n";

修改为:

//echo "&lt;!-- /all in one seo pack --&gt;\n";
这样一来就大功告成了,哈哈,没有那些讨厌的冗余代码啦。

可以不经允许随意转载,分享:广州SEO,移动互联网营销 » 解决wordpress插件All in One SEO Pack不显示meta描述

分享的每套dede模板,整站带数据源码,wordpress模板,整站源码下载,帝国cms模板,带数据帝国cms网站,淘宝客源码,女性网站模板等源码的下载链接地址请咨询QQ索取。
赞 (0)
分享到: 更多