WordPress 是一个免费的开源项目,使用 PHP 语言开发的博客平台,并逐步演化成一款内容管理系统软件,数据开发基于 MySQL,有许多第三方开发的免费模板,安装方式简单易用。其它详细信息请参考官方网站,有特别详细的说明,地址如下。
官方英文网站:https://wordpress.org/
官方中文网站:https://cn.wordpress.org/
Halo 也是一个免费的开源项目,使用 Java 语言开发的博客平台,官网解释是一款现代化的开源博客/CMS 系统,值得一试。数据库开发可基于 H2、MySQL,默认是 H2,可自定义,安装方式简单易用,还可基于 docker 安装,方便快捷。其它详细信息也请参考官方网站,有特别详细的说明,地址如下。
两个博客的安装,配置,调试,访问等,这里就不再介绍了,请参考上面的官方文档。
这篇主要说说,当且仅当你当前的博客是 WordPress,如何迁移到 Halo。其实应用部分,相当于基于 Halo 新搭建部署一个博客,但数据部分,如何从 WordPress 对应的表,迁移到 Halo 对应的表,是最复杂的部分,因为两个博客 MySQL 表类似却又不同,没法直接迁移,需要做字段对应关系才行。
WordPress 和 Halo 博客后台对应的表清单分别如下:
当然,每个人 WordPress 对应的表也许不一样,因为自己安装了部分插件等,都会新生成各种表,但 WordPress 刚部署搭建的几张通用表都是一样的,如文章、评论、链接、用户等表。
接下来,干货来了,如何把数据迁移过去呢?
提前注意:以下 SQL 脚本中,部分死值都是博主自己根据自有情况写的,请执行脚本前,对部分 SQL 脚本进行编辑再执行,切记!!!
脚本一:迁移分类目录。
INSERT INTO categories SELECT t.term_id id, now() create_time, now() update_time, t.description description, t1.`name` NAME, t.parent parent_id, NULL PASSWORD, t1.slug slug, NULL slug_name, '' thumbnail FROM wp.wp_term_taxonomy t LEFT JOIN wp.wp_terms t1 ON t.term_id = t1.term_id WHERE t.taxonomy = 'category' ORDER BY t.term_id
脚本二:迁移标签。
insert into tags SELECT t.term_id id, now() create_time, now() update_time, t1.`name` NAME, t1.slug slug, t1.slug slug_name, '' thumbnail FROM wp.wp_term_taxonomy t LEFT JOIN wp.wp_terms t1 ON t.term_id = t1.term_id WHERE t.taxonomy = 'post_tag' ORDER BY t.term_id
脚本三:迁移文章。
注意:如果你在 WordPress 中写的文章够多,这个 SQL 执行很慢,请耐心等待。。。
insert into posts SELECT 0 type, t1.id id, t1.post_date create_time, t1.post_modified update_time, 0 disallow_comment, t1.post_modified edit_time, 0 editor_type, t1.post_content format_content, 0 likes, NULL meta_description, NULL meta_keywords, t1.post_content original_content, '' PASSWORD, t1.id slug, 0 STATUS, '' summary, '' template, '' thumbnail, t1.post_title title, 0 top_priority, NULL url, t2.meta_value visits, 0 word_count FROM wp.wp_posts t1 LEFT JOIN wp.wp_postmeta t2 ON t1.id = t2.post_id AND t2.meta_key = 'post_views_count' WHERE t1.post_type = 'post' ORDER BY t1.id
脚本四:迁移页面。
insert into posts SELECT 1 type, t1.id id, t1.post_date create_time, t1.post_modified update_time, 0 disallow_comment, t1.post_modified edit_time, 0 editor_type, t1.post_content format_content, 0 likes, NULL meta_description, NULL meta_keywords, t1.post_content original_content, '' PASSWORD, t1.id slug, 0 STATUS, '' summary, '' template, '' thumbnail, t1.post_title title, 0 top_priority, NULL url, t2.meta_value visits, 0 word_count FROM wp.wp_posts t1 LEFT JOIN wp.wp_postmeta t2 ON t1.id = t2.post_id AND t2.meta_key = 'post_views_count' WHERE t1.post_type = 'page' ORDER BY t1.id
脚本五:迁移用户。
注意:如果你在 WordPress 中用户很多,这个 SQL 执行也很慢,请耐心等待。。。
insert into users SELECT t1.id id, t1.user_registered create_time, t1.user_registered update_time, NULL avatar, t1.user_url description, t1.user_email email, t1.user_registered expire_time, NULL mfa_key, 0 mfa_type, t1.display_name nickname, t1.user_pass PASSWORD, t1.user_login username FROM wp.wp_users t1 WHERE t1.id <> 1 ORDER BY t1.id
脚本六:迁移评论。
insert into comments SELECT 0 type, t1.comment_ID id, t1.comment_date create_time, t1.comment_date update_time, t1.comment_mail_notify allow_notification, t1.comment_author author, t1.comment_author_url author_url, t1.comment_content content, t1.comment_author_email email, '055c801bbbea60177266fe798f1e7164' gravatar_md5, t1.comment_author_IP ip_address, 0 is_admin, t1.comment_parent parent_id, t1.comment_post_ID post_id, 0 STATUS, NULL top_priority, t1.comment_agent user_agent FROM wp.wp_comments t1 ORDER BY t1.comment_ID
注意,这个脚本迁移的评论是所有评论,需要结合前面刷过的 post 表,把页面的评论单独刷一下,否则页面评论关联不上。脚本如下:
UPDATE comments t1, posts t2 SET t1.type = 1 WHERE t1.post_id = t2.id AND t2.type = 1
脚本七:迁移链接。
insert into links SELECT t1.link_id id, t1.link_updated create_time, now() update_time, t1.link_description description, t1.link_image logo, t1.link_name NAME, t1.link_rating priority, t1.link_rel team, t1.link_url url, t1.link_notes notes FROM wp.wp_links t1 ORDER BY t1.link_id
脚本八:迁移文章和分类目录的关系。
insert into post_categories SELECT NULL id, t3.post_date create_time, t3.post_modified update_time, t.term_id category_id, t3.id post_id FROM ( SELECT * FROM wp.wp_posts WHERE post_type = 'post' ) t3 JOIN wp.wp_term_relationships t2 ON t3.id = t2.object_id JOIN wp.wp_term_taxonomy t ON t2.term_taxonomy_id = t.term_taxonomy_id AND t.taxonomy = 'category'
脚本九:迁移文章和标签的关系。
insert into post_tags SELECT NULL id, t3.post_date create_time, t3.post_modified update_time, t3.id post_id, t.term_id tag_id FROM ( SELECT * FROM wp.wp_posts WHERE post_type = 'post' ) t3 JOIN wp.wp_term_relationships t2 ON t3.id = t2.object_id JOIN wp.wp_term_taxonomy t ON t2.term_taxonomy_id = t.term_taxonomy_id AND t.taxonomy = 'post_tag'
通过以上九步走,你的 WordPress 中的大部分基本数据均迁移完成,可以上 Halo 后台查看各个页面是否都展示了数据。如果部分页面以上,可以查看对应脚本,以及刷入的数据关系,是否有对不上的地方,烦请自行补充脚本再次刷数。
以下贴一些后台数据展现的截图,供参考:
仪表盘:
文章列表:
分类目录:
标签列表:
页面列表:
评论列表:
Good Luck!
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/7579.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~