首页 > WP相关 > 谈谈all in one seo pack自动取中文描述问题 解决方法适合最新版

谈谈all in one seo pack自动取中文描述问题 解决方法适合最新版

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

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 = 180;//这是描述包含的最少字符

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(']]>', ']]>', $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->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.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

相关日志

  1. 2009年6月2日17:35 | #1

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

    • administrator
      2009年6月4日17:22 | #2

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

  2. 2009年6月2日17:41 | #3

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

    • administrator
      2009年6月4日17:20 | #4

      @wuxush, 谢谢你的提醒:)我刚发现 :razz: 等我回去修改该后会给你一份的。

  3. 2009年6月7日01:00 | #5

    谢谢!

  4. 2009年8月25日16:00 | #7

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

  5. 2010年3月6日14:44 | #8

    长见识了。

  1. 2010年1月18日06:31 | #1