All in one seo Pack是我们使用wordpress建立英文博客必用插件,但是对于中文博客就会出现水土不服的情况前两天60分部落发现了这个插件导致百度K站——只收录首页或者压根就不受录。原因是使用noindex把流氓而又傻瓜的百度蜘蛛给吓跑了,详见本博“All in one seo插件导致中文wordpress博客百度收录减少”.
今天60分部落又注意到一个新的问题:All in one Seo Pack 这个插件会导致导致中文博客的Tag标签显示第一个字为乱码。
仔细看了一下,该插件Tag出现乱码的原因是,插件会试图将英文单词第一个字符转成大写, 但是中文是双字节字符,substr再strtoupper,php下中文就会出现乱码。
解决方案一:不使用首字母大写功能,反正中文博客没啥用到这个功能的地方。
进入插件->编辑,然后编辑All In One Seo Pack。然后选择文件:aioseop.class.php,
建议下载下来编辑,在线编辑不太好看。
在线编辑的话,在编辑框里找到:
function capitalize($s)字样,
在这个函数里,删除了下面这行代码
$tokens[$key] = strtoupper(substr($tokens[$key], 0, 1)) . substr($tokens[$key], 1);
解决方案二:完善capitalize函数,保留原有的功能,解决bug:
具体文件为aioseop.class.php第811行,用如下代码完全替换function capitalize函数部分的代码:
function capitalize($s) { $s = trim($s); $tokens = explode(' ', $s); for ($i = 0, $n = count($tokens); $i <$n; $i++) { $matches = array(); preg_match('/^(.{1})(.*)$/us', $tokens[$i], $matches); $tokens[$i] = strtr($matches[1], 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') . $matches[2]; } $s = implode(' ', $tokens); return $s; }
这样的话,标签乱码的问题就解决了。





评论
发表评论 反向链接