在MU中最原始的站点数据是不需要改动,只需要转移新添加的站点文件和数据,而这个转移的过程并不是很轻松。
WordPress的数据包括程序文件和数据库,所以转移的过程也分为两部分:
首先,我们来了解一下新创建的站点文件夹和数据表结构,在Wordpress中新建的数据库表前缀是:“wp_”的形式,而MU创建的第二个站点数据库表前缀是:“wp_2_”(2是新站点的ID)的形式;而MU创建新站点时会在主站的uploads文件夹下创建sites文件夹,再根据ID(假如ID为2)会在sites文件夹下再创建数字“2”这个文件夹,这样我们就明白数据该如何转移了。
一、程序文件的转移
转移的目标:主题和uploads文件夹下的所有文件
1、主题,我们可以在“管理网络”中的“主题”中直接安装,也可以在主机上拷贝到主站的themes文件夹下,然后在管理网络——外观——主题,点击“开放给整个站点网络使用”,这时我们就可以返回到新站点中进行启用该主题。
2、文件,把uploads文件夹下的所有文件都转移到“2”这个文件夹下即可。
二、数据库的转移
也许我们会想到用WP自身的导入与导出工具,把所有文章全部导出,再导入到新的站点,如果文章多,导出的XML文件好几M,导入的时候会耗费太长的时间,那就让人头痛了。所以我们推荐大家把原数据库导出,然后导入到新的站点。
1、导出原博客中的数据
打开 phpMyAdmin,导出原博客中的数据为.sql文件,数据表如下:
wp_commentmeta
wp_comments
wp_links
wp_options
wp_postmeta
wp_posts
wp_terms
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users
a、用文本编辑器打开导出的 .sql 文件,使用全局替换功能将其中的”wp_”替换为”wp_2_”(2为新站点的ID,如果ID是3,就写成wp_3_),替换并保存;
b、再将“wp-content/uploads”全局替换为“wp-content/uploads/sites/2”,把媒体文件的路径修改成网络路径。
2、导入修改好的数据库到MU数据库中
现在打开新站点的phpMyAdmin,找到MU数据库,你会发现数据库中有“wp_”和“wp_2_”两个表前缀的数据库,把前缀为“wp_2_”所有的数据删除或重命名,然后导入刚才修改过的 .sql 文件。
3、修正“siteurl”与“home”中的地址(在没有绑定原域名之前)
在MU新创建的站点,域名是newname.Domainname.com这样的二级域名,我们需要把原域名修改成MU中新添加的二级域名,打开wp_options数据表,找到名称为“siteurl”与“home”两个数据,修改其中的值即可。
有些朋友在使用的过程中发现使用原博客中的wp_options数据会出现问题,如果有问题就不导出原博客中的wp_options数据,使用新站点wp_options数据,然后再设置下新站点。
在后面我们会讲到如果绑定域名,如果绑定了原域名而且使用原博客中的wp_options数据,我们就不需要修改这一步了!
4、修正文章作者
因为修改过的数据库表前缀为“wp_2_”,与之前的是不一样,所以我们需要在MU中把新站点中所有的文章作者指定给MU管理员,可以在phpMyAdmin中的SQL中执行以下代码:
UPDATE wp_2_posts SET post_author = 1
如果新站点的有多个作者,那只有在后台——文章列表中选择同一作者的文章进行批量修改了。
5、修正数据库中的meta_key
我们在前面修改表前缀是全局替换,我们也把一些不需要修改成“wp_2_”这样的数据给修改好,如数据库表 wp_2_postmeta 和 wp_2_usermeta 中的一些meta_key,基本上是以“_wp_”这样的数据表,所以我们需要在替换完成后将其改回原来的值,仍以博客 ID 为2作为例子,在 MU 的数据库中使用下面的 SQL 语句进行修正:
UPDATE wp_2_postmeta SET meta_key = '_wp_2_attachment_metadata' WHERE meta_key = '_wp_attachment_metadata'
UPDATE wp_2_usermeta SET meta_key = '_wp_2_attached_file' WHERE meta_key = '_wp_attached_file'
可能不止这两处地方,根据实际情况再修改回来。
到这里文件与数据的转移基本完成,前往“管理网络”后台中将插件与主题启用,新的站点就可以使用了。