解决WordPress不支持中文标签的问题

时间:13-09-10 栏目:wordpress, 建站指导, 技术文章 作者:炫酷网站设计建设 评论:0 点击: 536 次

目前版本的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不支持中文标签的问题

解决WordPress不支持中文标签的问题:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!

------====== 本站公告 ======------
专业网站设计制作

读者排行

最新评论