解决all in one seo pack自动取中文描述问题 适合最新版 all in one seo pack V1.6.10.3

下面的所有修改是针对 plugins/all-in-one-seo-pack/all_in_one_seo_pack.php,注意1.6.10版本开始已是修改plugins/all-in-one-seo-pack/aioseop.class.php,修改工具建议使用UE等工具,不要改变文件的默认编码类型,否则会有问题,适合最新版all in one seo pack V1.6.10.3

1、字数问题:

默认是对英文截取、如果按照原先的长度来截取中文的话是非常短的,引文UTF8编码一个中文的长度是3。所以增加截取的长度,修改等号后面的部分,修改成你想要的字数,最大不要超过450,不过我建议最高350到400就OK了.

var $maximum_description_length = 300 //这是最大的描述字符长度
/** Minimum number of chars an excerpt should be so that it can be used
*
* as description. Touch only if you know what you're doing

*/

var $minimum_description_length = 1;//这是描述包含的最少字符

2、防止截取的字符乱码并且让截取适合中文,找到下面这段:

	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(']]>', ']]&gt;', $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 --;
		}
		/*
		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 = strip_tags ( $text );
$max = $this->maximum_description_length;
if ($max<strlen ( $text )) {
while ( $text [$max] != ' ' &&$text [$max] != '\n' &&$max >$this->minimum_description_length ) {
$max--;
}
}
if ($max == $this->minimum_description_length) {
$max = $this-&gt;maximum_description_length;
}
…//后面还有代码,我就省略了,为了减少篇幅

我当时也是这么改的晒,但是改完后发现博客变慢了,执行耗时是108ms*20=2XXX毫秒,最后找到问题是上面加粗的代码行存在效率问题,这是一个非常严重的问题,直接导致我的loop_start慢了20倍,其实这个描述是给搜索引擎看的,他不会在乎你是不是一个可以理解,也不在乎能够正常阅读的句子,我们只要给出大概就行了…所以在这完全没有必须,牺牲这么效率来使句子更加通顺,因为这个没有必要的。

3、字符数问题:

		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())) {

呵呵,修改完成了吗?那么你现在的all in one seo pack就生效了,等待搜索引擎再次抓取吧:)

使用all in one seo pack还有一点,就是为了不影响baidu收录,请将 all in one seo pack里面的那些 noindex的选项全部去掉(百度太傻了,不过还得用它,没办法,适应它把,呵呵),如果要控制搜索引擎的收录,请使用robots.txt来控制吧

鉴于考虑到部分用户不会修改,现在这里发布修改后的文件吧:

如果有什么建议和意见可以在下面留言:-)

要使用下面这个修改好的东西需要先安装相应原版,然后使用下载的压缩包里面的文件对相应文件进行替换:)

*修改好的版本列表以及下载

All in One SEO Pack 1.6.10.3版本已经修改好的aioseop.class.php文件 点我下载
特别感谢yeah的反馈,解决首页描述字符数太少的时候不显示的问题 1.6.10.3版本已经修复这个问题
All in One SEO Pack 1.6.10.2版本已经修改好的aioseop.class.php文件 点我下载

注意:1.6.10版本开始时替换aioseop.class.php,而非以前的all_in_one_seo_pack.php

All in One SEO Pack 1.5.7版本已经修改好的all_in_one_seo_pack.php文件 点我下载

All in One SEO Pack 1.5.6版本已经修改好的all_in_one_seo_pack.php文件 点我下载

All in One SEO Pack 1.5.5版本已经修改好的all_in_one_seo_pack.php文件 点我下载

All in One SEO Pack 1.5.4版本已经修改好的all_in_one_seo_pack.php文件 点我下载

All in One SEO Pack 1.5.2版本已经修改好的all_in_one_seo_pack.php文件 点我下载
enjoy
特别推荐文章:



相关日志

Related posts

Leave a comment

17 Comments.

  1. 我改了,可是首页出现“Parse error: syntax error, unexpected ‘]’ in /plugins/all-in-one-seo-pack/all_in_one_seo_pack.php on line 1176” 错误。博主能共享一下改好的文件吗?可以的话给我发一份,非常感谢!

    • @wuxush, 这个问题我大概了解,我也发现这个文件不怎么好改,里面很多字符无法显示,晚上我回去修改后将会在这修改过来。

  2. 你怎么platinum seo pack和all in one seo pack两个都用啊!

  3. 我装了,不知道为什么没有中文设置页,里面有中文的MO文件。

  4. 网上很多文章又说不要用all in one seo pack。弄的现在都要不要用了!!

    • 之所以不推荐用就是上面的这个原因,不能生成描述,想文章这么修改后已经可以生成描述,是可取的办法

  5. :?: :?: 按照您的修改博客正文是可以了。。。但是,首页描述没了。。。

    • 你好 你在后台设置ALL in one SEO里面的Home Description: 这个才是设置你首页的描述的地方

      • 设置了。。。就是应为设置了不显示才来向您请教的。。。

        • 1 你检查一下你的模板文件的header.php文件中不是不有:< ?php wp_head(); ?>

          2 检查一下all in one SEO是否启用?(需要在后台插件状态中选中[Enabled]) 然后在查看网页源文件是不是能看到注释起来的all in one SEO字样
          3 然后看看其他页面的all in one SEO是不是能用?自己手动改的时候容易出问题 推荐使用UE修改

  6. 您在的啊。。。我试试。。。不行再来请教您啊

Leave a Reply


[ Ctrl + Enter ]

Trackbacks and Pingbacks: