目前版本的Wordpress(包括现在的2.8.3 3.3.1)有个问题,可以说是Bug,就是对中文标签(Tag)支持不好。
在使用动态链接(例如http://nutsland.cn/blog/?tag=%e7%94%b5%e5%bd%b1)访问标签时,中文标签的访问没有问题,但是在使用固定链接(例如http://nutsland.cn/blog/tag/%e7%94%b5%e5%bd%b1)访问时,显示404错误(找不到页面)。经过试验如果使用未编码的固定链接(例如http://nutsland.cn/blog/tag/电影),中文标签的访问又没有问题了。然而,在填写文章标签的时候,Wordpress会自动生成编码的标签别名(即把“电影”编码为“%e7%94%b5%e5%bd%b1”),每次都修改标签的别名显然不是一个好方法。
Google一下,终于找到了解决的办法,就是修改代码使Wordpress在解析固定链接时自动把其中已编码的中文字符进行解码(即把“%e7%94%b5%e5%bd%b1”解码还原为“电影”)。
注意,网络上一些通过在某个empty()函数前面加“!”的方法是错误的,那种方法会使得标签的固定链接无法使用,而只能通过动态链接访问标签。
正确的修改方法是如Wopus上所说的:
修改wp-include\classes.php文件:(新版WP该文件已移除)
修改wp-include\class-wp.php文件:
1、找到
$pathinfo = $_SERVER['PATH_INFO']; |
修改为
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], 'UTF-8', 'GBK'); |
2、找到
$req_uri = $_SERVER['REQUEST_URI']; |
修改为
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], 'UTF-8', 'GBK'); |
(以上两处修改都在函数parse_request()内)
这样修改之后Wordpress就会在解析固定链接的时候自动解码中文字符,Wordpress不支持中文标签的问题也就得到解决了。
原文解释如下::::
首先,产生中文tag链接无法打开或者找不到博客文章的原因在于WordPress不支持中文的编码。那我们就需要强制让WordPress能支持中文的编码形式,即UTF-8和GBK编码。
修改方法,首先修改WP-include中的classes.php文件(需要使用用专门的PHP编辑器工具,推荐EditPlus),将第47行和第52行代码进行修改。
第47行原代码:
1.
$pathinfo
=
$_SERVER
[
'PATH_INFO'
];
替换为:
1.
$pathinfo
= mb_convert_encoding(
$_SERVER
[
'PATH_INFO'
], “UTF-8“, “GBK“);
第52行原代码:
1.
$req_uri
=
$_SERVER
[
'REQUEST_URI'
];
替换为:
1.
$req_uri
= mb_convert_encoding(
$_SERVER
[
'REQUEST_URI'
], “UTF-8“, “GBK“);
修改后,保存下,然后将保存后的classes.php文件上传并覆盖原文件即可。
声明: 本文由( 炫酷网站设计建设 )原创编译,转载请保留链接: 解决WordPress不支持中文标签的问题