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

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

本文章已过时,本人已发布插件解决中文标签的问题,参看:http://nutsland.cn/blog/archives/177.html

目前版本的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不支持中文标签的问题也就得到解决了。

分享到:
Categories: Web Tags: , , , , , , (5,813 views)
  1. January 18th, 2013 at 19:51 | #1

    试过了,不行!

  2. tkoak
    January 9th, 2014 at 16:06 | #2

    非常好,刚刚升级了3.8,忘记之前是怎么手工修改的了,以后用你的plugin,方便!

  3. May 14th, 2014 at 11:25 | #3

    @tkoak
    已解决,多谢博主。

  1. March 9th, 2012 at 11:15 | #1
  2. June 11th, 2014 at 16:15 | #2
  3. June 11th, 2014 at 16:18 | #3
  4. January 18th, 2015 at 16:53 | #4