WordPress MU 是 WordPress 的多用户(Multi-User)版本。
在本地安装测试一下WordPress MU,才发现虽然它和WordPress同源,可是要从WordPress迁移到WordPress MU并不是一件容易事。后来从网上找到一篇英文博客描述了从WordPress向WordPress MU迁移的过程,准备结合自己的经验翻译一下并结合相关文章整理出来供大家参考。
为什么要用WordPress MU?¶
前一阵子换服务器,因为不清楚子域名文件夹是随子域名自动创建/删除的,删除子域名的时候差点将我妹妹挂在这里的博客弄丢了,详见WordPress 网站搬家经验总结。于是就想接触一下这个程序,一是方便维护,多个用户共用一个程序和数据库,扩充更方便;二是该程序支持子域名和子目录两种方式 设立不同的用户文件夹,使用方便。
另外,我还想对网站进行扩展,增加一些其它的栏目,这样的话使用WordPress MU也会很方便。可是我的站已经有大半年的时间了,要突然改变结构还真是下不了这个决心,虽然现在的结构让我很不满意。
总之先准备着吧,等到终于决定要迁移到WordPress MU的时候就可以一鼓作气的进行了。
迁移步骤¶
1、下载并安装WordPress MU
当然,最权威的安装说明仍然是官方的,请参考其 Readme 文档。该文档将指导你完成整个 MU 的安装过程。默认的安装过程与标准WordPress的安装是一模一样的。在服务器上解压缩 MU 安装文件、更改某些目录的权限、新建一个空的mysql数据库,然后运行安装就一切都搞定了。
1. 下载并解压缩 WordPress MU 的压缩包。解压过程中会创建一个名为 “wordpressmu” 后面带版本号的目录。
2. 在您的服务器上为 WordPress MU 创建一个数据库,最好是让该 MySQL 数据库的用户有全部权限来对数据库进行访问和修改。
3. 请把 WordPress MU 的文件上传到服务器上合适的位置:
* 如果您想实现域名直接访问到 WordPress MU 站点(例如:http://example.com/),移动或上传所有的文件和目录到服务器站点的根目录中。如果你想让每个用户拥有自己的子域名并通过子域名访问站点,则必须将 WordPress MU 安装在根目录下。
* 如果您想让 WordPress MU 使用自己的子目录(例如:http://example.com/blogs/),重命名 wordpressmu 目录为您喜欢的目录名称并移动或上传该目录到您的服务器站点目录中。例如,您想将 WordPress MU 安装在一个名叫 “blogs” 目录中,您需要重命名 “wordpressmu” 目录为 “blogs”,并且将其上传到您服务器站点根目录中。
4. 请确认您的安装目录和 wp-contents 目录为页面服务可写入。
5. 在您最喜欢的浏览器中运行 WordPress MU 的安装脚本。这将访问 index.php 文件。
* 如果您的 WordPress MU 安装在根目录中,您需要访问:http://example.com/index.php
* 如果您的 WordPress MU 安装在您定义的子目录中,例如 blogs,您需要访问:http://example.com/blogs/index.php
相关文档:http://codex.wordpress.org/Installing_WordPress
如果您是升级安装,请查看 http://codex.wordpress.org/Upgrading_WPMU
2、导入你的WordPress数据
安装完WordPress MU,你可能会看到它提供的“导入/导出”功能按钮,如下图所示,
我们在WordPress中都见过这个功能,说是可以让你备份文章。在WordPress里,这个功能实际上没多大意义,导出文章不如备份mysql数据库。Wulf在他的文章中提到,使用这里的导入功能需要耗费无比长的时间,他的5.8MB的导出文件,导入的时候就让他头痛至极。并且他还尝试将文件分解成小文件来导入,也没能实现。所以推荐大家使用导入数据库的方法来导入数据。
注:
实际上,如果你的导出文件很小,还是可以尝试用这种方法导入数据的,这样就可以避免后面复杂的对mysql数据库的操作。
而且,多位网友的实践证明,即使是修改数据库,也并不是非常完美的。因为还涉及到旧数据库与WordPress MU中的总数据库表(即表名中不带ID号的那些数据表)之间的匹配问题。
要导入数据库里的数据,我们需要先进行下一步,在该系统中新建一个博客。
3、新建一个博客
在WordPress MU中新建一个博客就像在WordPress中新建一篇文章那么简单。单击(站点管理),然后单击(博客),填写表单并提交。注意WPMU给你新建的这个博客提供的ID号,如下图左边所示(第一个当然是 1 了)。回头我们在修改mysql数据库的时候就要用到这个数字。
打开 phpMyAdmin,查看旧博客(WordPress里那个)的数据库。你需要将以下数据库表导出为一个单独的 .sql 文件:
- wp_comments
- wp_links
- wp_postmeta
- wp_posts
- wp_terms
- wp_term_relationships
- wp_term_taxonomy
还记得第3步中提到的 ID 吧?用你喜欢的文字编辑器打开导出的 .sql 文件,使用全局替换功能将其中的”wp_”替换为”wp_{ID}_”(这里的{ID}就是刚才提到的那个ID,如果如上例所示ID是1,则对应的表示为”wp_1_”)。
现在请打开你的 phpMyAdmin ,找到你的WPMU数据库。你会发现在这个数据库中已经有名字为”wp_1_”的数据表,如“wp_1_posts”等等。将这些数据库表改名,例如加上前缀 “old_”。但是保留 “wp_1_options”。重命名这7个数据库表之后,将刚才修改过的 .sql 文件导入到这个 WPMU 数据库,你就得到了如右图所示的数据库表列表。
5、修正文章作者
这是最后一步了。在新的 WPMU 中,给你的原博客中的每个作者(也许只有你自己一个)创建一个用户(如果只有你,那就是该 WPMU 的管理员)。要将所有文章都指派给 WPMU 的管理员用户,请在你的 WPMU 数据库中执行以下命令(将其中的 {ID}替换为你的博客ID,如 1):
UPDATE wp_{ID}_posts SET post_author = 1
如:
UPDATE wp_1_posts SET post_author = 1
6、修正数据库中的meta_key
在前面的第4步中的对数据库备份文件 .sql 的替换是全局性的,它也会将不需要替换成 “wp_1_” 的地方也给替换了,如数据库表 wp_*_postmeta 和 wp_*_usermeta 中的一些meta_key,对于这一的替换,我们需要在替换完成后将其改回原来的值,仍以博客 ID 为1作为例子,在 WPMU 的数据库中使用下面的 SQL 语句进行修正:
UPDATE wp_1_postmeta SET meta_key = ‘_wp_1_attachment_metadata’ WHERE meta_key = ‘_wp_attachment_metadata’
UPDATE wp_1_usermeta SET meta_key = ‘_wp_1_attached_file’ WHERE meta_key = ‘_wp_attached_file’
等等
上面的操作实际上是将前面替换后的 _wp_1_attachment_metadata 等重新改回到 _wp_attachment_metadata 。根据你的实际情况,可能需要替换回去的meta_key不止这两个,请自行查明后修改。
7、使原来上传的文件可用
如果你曾经在原来的WordPress博客里上传了文件,这些文件存放在 ~/wordpress/wp-content/uploads
中,而对应于WordPress MU 中的 ~/wordpress-mu/wp-content/blogs.dir/{Blog ID}/files
。将 ~/wordpress/wp-content/uploads
中的所有文件复制到 ~/wordpress-mu/wp-content/blogs.dir/1/files
,并在 WPMU 数据库中使用下面的SQL命令更新文章内容中的媒体文件链接:
update WP_1_POSTS set POST_CONTENT = replace(POST_CONTENT, ‘wordpress/wp-content/uploads’, ‘wordpress-mu/wp-content/blogs.dir/1/files’)
这样就可以使原来上传的所有媒体文件在新博客中可用。
8、完成!
导入工作已经完成。现在,你需要登录到管理面板对博客进行重新设置和启用相关插件。刚才在导入数据时我们故意没有修改数据库表 wp_options ,所以,导入过程并没有将博客设置导入。根据原作者的描述,导入博客设置将会出现很多问题,所以手动进行相关设置反而更好。
现在,你就可以享受一个管理面板,一键安装新博客,一个数据库,一个代码包的简单、可升级、值得信任的WordPress MU了。
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/how-to-migrate-from-wordpress-to-wordpress-mu/>。转载请保留此信息及相应链接。