合并之前,我大概有或曾经有共三到四个站点。全部安装的是 WordPress。由于个人时间不是很多,照顾多个站点实在是有点力不从心。最后决定把多个站点合并到一起。这样既省时间也省了空间。
还好,我多个站点架设的环境都是一样的。合并起来不会出现数据库数据不兼容的问题。而且我在合并的过程中,并不是直接用 PMA 导出数据进行合并。而是应用到了 WordPress 后台自己的导出导入功能。
比较简单的方法,就是将不想继续开放的站点,使用后台导出功能,将站内的文章到处成 XML 文件。导出的数据包括日志、页面、分类、标签、附件信息等。等导出这些文件后。分别在想保留的这个站点的后台进行导入。附件也可以由程序自动从原来的站点下载并存放在目标站点中。
不过,这样操作以后,问题就出现了。大家可能知道,WordPress 数据库中的 wp-posts 这个表中有一个 guid 键值。这里记录了文章的最原始 URL 信息。无论你将数据导入到什么地方。这个信息是不变的。而当你批量修改了这个键值中的域名后。就出现了文章的 ID 重复的问题。虽然不影响直接的页面访问,但是对于 RSS 订阅等操作可能会有所影响。
那么,我是如何进行后续的整理操作的呢?请接着往下看。
批量修改 wp_posts 中 guid 中域名信息
UPDATE `wp_posts` SET `guid` = replace( guid, "原域名", "新域名" ) ;
这样,经过几次的查询处理,可以将从多个站点导过来的文章的域名进行统一。
批量重新生成 guid 信息
UPDATE `wp_posts` SET `guid` = CONCAT('域名/前缀',ID) where post_type='类型'
“域名/前缀”这个地方有以下两种形式:
“http://domain.tld/?p=” 供 Post 使用。
“http://domain.tld/?page_id=” 供 Page 使用。
而且语句后面的“类型”也分别为“post”和“page”
这样做,是为了能够让 guid 中记录的链接与站内文章的真实链接相对应。而且,以上操作也适用于那些使用后台导出导入功能进行搬家的朋友们。
另外注意一点,以上操作虽然会整理清楚站内的信息,但可能会导致您 RSS 订阅的列表文章位置发生改变。
顺便说一下,附件在迁移的过程中,可以从远程的服务器直接下载到本地。当相应的目录中存在同名文件时,将会自动从命名。而且,附件虽然导过来了,也许您还需要编辑一下那些插入了图片的日志。免得老站点关闭后,那些文章中的图片无法显示。
有日子没更新什么了,最近也不知道在忙啥。
Related posts:


又学了一招,谢谢楼主分享,顶!
你还用学这个?
学习中,色梦太强了!
我现在还是一堆,愁啊
能合就合并到一起吧。只要你以前用的是 Slug 作为链接地址。影响不会很大。把几个站点的域名都指向到一个空间上。然后合并完,用原来各个站点的原地址都可以正常访问的。
刚过来我还以为,css出错了,吓一跳,一想不可能啊,原来搞了这么一手,赞同丑的极致也是一种美
呵呵。一直没找到自己满意的主题。所以决定慢慢用这个改出来一个自己的。正好也学学主题的运作流程。
学到了点,谢谢