WordPress直接由2.2.2升级到2.6.2指南

我使用WordPress已经一年半了,由于我频繁的改动,使得在WordPress2.2.2到2.3的那一次升级一直没有时间进行。原因是UTW的tag系统和新的WordPress自身的Tag系统切换太复杂(不仅仅是数据结构,最要命的是一系列的模板改变)。

昨天,很不幸地发现有人居然在试图拿取我的博客管理员账号。于是,下定决心直接升级到最新的2.6.2了!当然,其历程是无比坎坷的,也赚的一些经验,分享如下:

首先,最重要的:从LBS到WordPress2.0那次升级就吃过一次苦头,这次又一次吃苦头:服务器千万不要使用WINNT类型。否则会出现很多怪异的错误。例如我在本地升级的时候,一个tag“张信哲”死活无法正确显示。询问了很多朋友测试,都没有问题。最终发现,在我自己的服务器测试,也是好的。由于我的博客微软的粉丝挺多的,我强调一下,并不是说Windows服务器差,只是WordPress这种PHP+MySQL并且专门为Apache优化的玩意跑在Windows不合适:)

由于WordPress在2.3和2.5两个发行版均进行了数据库结构改变,再加上自2.3开始,内部的tag系统取代了UTW提供的tag支持,因此升级的过程极为复杂。以下列举几个需要注意的地方:

  1. 数据库的导出
    使用mysqldump可以将数据直接导出。如果因历史原因没有采用utf-8的数据格式,可以在导出参数上加上一个:–default-character-set=latin1,即:
    #mysqldump –default-character-set=latin1 -uYOURACCOUNT -pYOURPASSWD DBNAME > /…/wwwroot/backup.sql
  2. 本地测试环境的搭建和数据库的导入
    在导入SQL文件之前,最好做一次批量替换,将正式域名替换为测试域名。例如我就将www.awflasher.com全部替换为了aw.com(我在本地改了HOST,用这个域名专做测试)。否则,本地若是localhost(或者我的aw.com),是无法打开直接导入的数据库的。
    导入数据库使用mysql命令行的source命令即可。关于source的使用,到处都是教程,非常易用。
  3. 升级、导入UTW标签(Tag)
    第一步,执行 /blog/wp-admin/upgrade.php 完成数据库结构更变;
    第二步,进入管理后台 /wp-admin/ 。这时候,可以看到全新的WordPress2.5管理界面。可能还有点不习惯,不过没关系,找到Manage->Import,里面会有一个专门针对UTW的导入(wp-admin/admin.php?import=utw)
  4. 数据库结构更改引发的模板API更变
    修改我的TES,将UTW的API逐个去除,再改为支持WordPress内部的tag系统,这恐怕是整个升级过程中最复杂的一个环节了。当然,在新的数据结构中,categories(分类)和tags(标签、关键词)被统一整合为wp_terms表,这也许会对日后的分类标签管理提供更好的解决方案。
    对于原来主题文件中的“UTW_”函数所造成的损失,UTW的作者提供了一个兼容解决方案。个人觉得还是比较方便的。当然,如果追求主体代码的完美,则还是手工更改吧:
    首先更改基本的Tag显示:
    旧:UTW_ShowTagsForCurrentPost("commalist", array('last'=>', %taglink%', 'first'=>'关键词:%taglink%',))
    新:the_tags("关键词:");
    然后去掉UTW_ShowRelatedPostsForCurrentPost一类函数,改用WordPress Related Posts插件来完成这项工作。对应的函数是:wp_related_posts()
    Tag为张信哲的文章始终无法显示,非常奇怪。在后台中发现,给它一个slug之后马上就好了。可是这样,原来的链接就全部破坏了。这个问题,实在是令人费解。
    换成Linux服务器,就解决了。
  5. 其他修改
    由于WordPress自己的Tag系统永久链接和原来的可能不一致,因此需要在永久链接配置页面进行单独修改,以保持新旧URL的一致性。此外,Tag Cloud也有了新的模板标签,你可以在文章中输出,亦可以在页面中输出,非常灵活强大,详情见此官方文档
    此外,由于我用jQuery做了大量修改,这些地方的检查也需要利用Firebug和Fiddler等辅助工具仔细查询。比如留言提交目标、DOM中的id值,等。
  6. 一些插件带来的问题All in one SEO

    如果是中文博客,在Tag(标签)和Category(分类)页面很可能会出现“标题首字乱码”这一奇怪的问题。不过Google一下很快找到解决方案

    WP Polls

    需要重新更新一下模板(设置里那几个Ajax提交的按钮按一下),数据结构没有调整,只是作者把polls目录换成wp-polls了,不太明白意义何在,加一个“wp-”的前缀,显得更官方?

    SitemapXML

    注意修改相关目录写权限,如果数据库保留了相关的wp_options表,则基本不用重新输入配置。

    WP-Super-Cache

    注意修改相关目录写权限。并且一定要确认配置文件wp-config.php里有这句
    define(’WP_CACHE’, true)

从2.2.2一口气升级到2.6.2,这感觉就像98年玩《三国英杰传》时攒够了装备直接把“短兵”升级为“步兵车”一样;而“装备”不齐时,等级够高也无法升级,这种遗憾,我也体会了好久。这两天以下英雄纷纷帮忙献计献策、援助测试,这里要深深地感谢:

水煮鱼SlukeHailinJoyqi、Spirit zz、ChadaDavid峰回路转,陆续补充……

在IE下有一个特别奇怪的bug,这里要特别感谢Realazy老师提供的帮助!

Advertisements

42 thoughts on “WordPress直接由2.2.2升级到2.6.2指南

  1. 一步大变化啊……无比庆幸我6月才开始接触wp,上手就是2.5.1,麻烦减少好多……结果更换域名还是让我头痛了一天才搞定

    wp的导入导出太痛苦了!

  2. 不过说起来,下面那个快速检索那么长,最热top20和胡乱看看又少很多,中间空好大一块绿色,好那啥……
    刚发完上面评论,页面刷新时候直接跳得那里,吓我一跳

  3. 嗷嗷,你可以去下个Wordpress Automatic Upgrade插件,再下个WordPress Database Backup就可以备份数据库叻,你开心网帐号多少,mail一下给我,嘿嘿

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s