WordPress 是一个免费的开源项目,使用 PHP 语言开发的博客平台,并逐步演化成一款内容管理系统软件,数据开发基于 MySQL,有许多第三方开发的免费模板,安装方式简单易用。其它详细信息请参考官方网站,有特别详细的说明,地址如下。

官方英文网站:https://wordpress.org/

官方中文网站:https://cn.wordpress.org/

Halo 也是一个免费的开源项目,使用 Java 语言开发的博客平台,官网解释是一款现代化的开源博客/CMS 系统,值得一试。数据库开发可基于 H2、MySQL,默认是 H2,可自定义,安装方式简单易用,还可基于 docker 安装,方便快捷。其它详细信息也请参考官方网站,有特别详细的说明,地址如下。

官方网站:https://halo.run/

两个博客的安装,配置,调试,访问等,这里就不再介绍了,请参考上面的官方文档。

这篇主要说说,当且仅当你当前的博客是 WordPress,如何迁移到 Halo。其实应用部分,相当于基于 Halo 新搭建部署一个博客,但数据部分,如何从 WordPress 对应的表,迁移到 Halo 对应的表,是最复杂的部分,因为两个博客 MySQL 表类似却又不同,没法直接迁移,需要做字段对应关系才行。

WordPress 和 Halo 博客后台对应的表清单分别如下:

   

当然,每个人 WordPress 对应的表也许不一样,因为自己安装了部分插件等,都会新生成各种表,但 WordPress 刚部署搭建的几张通用表都是一样的,如文章、评论、链接、用户等表。

接下来,干货来了,如何把数据迁移过去呢?

提前注意:以下 SQL 脚本中,部分死值都是博主自己根据自有情况写的,请执行脚本前,对部分 SQL 脚本进行编辑再执行,切记!!!

脚本一:迁移分类目录。

INSERT INTO categories
SELECTt.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
FROMwp.wp_term_taxonomy tLEFT JOIN wp.wp_terms t1 ON t.term_id = t1.term_id
WHEREt.taxonomy = 'category'
ORDER BYt.term_id

脚本二:迁移标签。

insert into tags
SELECTt.term_id id,now() create_time,now() update_time,t1.`name` NAME,t1.slug slug,t1.slug slug_name,'' thumbnail
FROMwp.wp_term_taxonomy tLEFT JOIN wp.wp_terms t1 ON t.term_id = t1.term_id
WHEREt.taxonomy = 'post_tag'
ORDER BYt.term_id

脚本三:迁移文章。

注意:如果你在 WordPress 中写的文章够多,这个 SQL 执行很慢,请耐心等待。。。

insert into posts
SELECT0 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
FROMwp.wp_posts t1LEFT JOIN wp.wp_postmeta t2 ON t1.id = t2.post_id AND t2.meta_key = 'post_views_count'
WHEREt1.post_type = 'post'
ORDER BYt1.id

脚本四:迁移页面。

insert into posts
SELECT1 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
FROMwp.wp_posts t1LEFT JOIN wp.wp_postmeta t2 ON t1.id = t2.post_id AND t2.meta_key = 'post_views_count'
WHEREt1.post_type = 'page'
ORDER BYt1.id

脚本五:迁移用户。

注意:如果你在 WordPress 中用户很多,这个 SQL 执行也很慢,请耐心等待。。。

insert into users
SELECTt1.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
FROMwp.wp_users t1
WHEREt1.id <> 1
ORDER BYt1.id

脚本六:迁移评论。

insert into comments
SELECT0 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
FROMwp.wp_comments t1
ORDER BYt1.comment_ID

注意,这个脚本迁移的评论是所有评论,需要结合前面刷过的 post 表,把页面的评论单独刷一下,否则页面评论关联不上。脚本如下:

UPDATE comments t1,
posts t2
SET t1.type = 1
WHEREt1.post_id = t2.id AND t2.type = 1

脚本七:迁移链接。

insert into links
SELECTt1.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
FROMwp.wp_links t1
ORDER BYt1.link_id

脚本八:迁移文章和分类目录的关系。

insert into post_categories
SELECT NULLid,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' ) t3JOIN wp.wp_term_relationships t2 ON t3.id = t2.object_idJOIN wp.wp_term_taxonomy t ON t2.term_taxonomy_id = t.term_taxonomy_id AND t.taxonomy = 'category'

脚本九:迁移文章和标签的关系。

insert into post_tags
SELECT NULLid,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' ) t3JOIN wp.wp_term_relationships t2 ON t3.id = t2.object_idJOIN wp.wp_term_taxonomy t ON t2.term_taxonomy_id = t.term_taxonomy_id AND t.taxonomy = 'post_tag'

通过以上九步走,你的 WordPress 中的大部分基本数据均迁移完成,可以上 Halo 后台查看各个页面是否都展示了数据。如果部分页面以上,可以查看对应脚本,以及刷入的数据关系,是否有对不上的地方,烦请自行补充脚本再次刷数。

以下贴一些后台数据展现的截图,供参考:

仪表盘:

文章列表:

分类目录:

标签列表:

页面列表:

评论列表:

Good Luck!

博客从 WordPress 迁移至 Halo相关推荐

  1. 博客从wordpress迁移到Github.io、GitCafe

    原文地址 博客从wordpress迁移到Github.io.GitCafe 最近博客(www.coderli.com) 被几个流氓IP爬的厉害,流量超标.促使我萌生了将博客迁移到github.io的想 ...

  2. 博客从wordpress迁移到hexo

    参考资料 https://www.jianshu.com/p/fd233d967e88 https://segmentfault.com/a/1190000005624504 https://gith ...

  3. 博客大事记之迁移博客到香港主机

    个人博客:https://rebootcat.com/2020/11/10/move_blog_hk/ 前言 之前其实已经写过一篇博文: 迁移博客到香港虚拟空间,那为什么又要写这篇博客呢? 上次其实是 ...

  4. yum安装论坛discuz,phpwind,博客系统wordpress,后台数据库管理phpmyadmin。

    一)配置yum系统,参考下面链接. http://shunzi.blog.51cto.com/8289655/1337953 二)安装httpd,mysql,php等服务. yum -y instal ...

  5. CSDN搬家--博客园--WordPress

    错开の折腾经历:个人博客 文章目录 前言 讲一下vps: 博客搬家 1.CSDN导出至博客园 2.博客园导出至WordPress 3.用WP All Import Pro插件导入文章 最后 前言 最近 ...

  6. 博客搬家 -- 将博客从CSDN迁移到hexo上

    博客搬家 -- 将博客从CSDN迁移到hexo上 博客已经迁移到 凌枫's Blog 新博客里面有很详细的如何是hexo+git+github来搭建简单的静态博客 最新也在hexo博客里面更新了Spr ...

  7. lnmp安装博客系统WordPress

    CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2 说明: 操作系统:CentOS 6.2 32位 系统安装教程:Cen ...

  8. 打造自己博客(wordpress)的wap手机版本

    这儿介绍我试用的两款插件:wordpress-mobile-edition和wp-t-wap. 1.先说一下两者的区别. wordpress-mobile-edition插件使用后,可以用手机直接访问 ...

  9. WP博客ajax,WordPress文章点击统计ajax版,兼容wp super cache缓存代码及插件

    自从陌小雨博客历经文章阅读数数次清零后,陌小雨对这个文章浏览数也不是很在意了,这也就是所谓的破罐子破摔吧,但自从陌小雨前段时间再启用 wp super cache 纯缓存代码后,陌小雨觉得还是有必要把 ...

最新文章

  1. Centos环境下mysql源码编译安装
  2. 数据分析---《Python for Data Analysis》学习笔记【04】
  3. CSS实现段落首行缩进、1.5倍行距、左右对齐
  4. Remote PC另类用法:远程控制
  5. php执行zip压缩,PHP执行zip与rar解压缩方法实现代码
  6. [转]数据结构KMP算法配图详解(超详细)
  7. mysql判断是否在日期区间_通过sql判断时间区间是否存在数据
  8. Introduce Parameter Object(引入参数对象)
  9. 语言ppt课件猜拳_八年级语文上册第22课 孟子三章讲解及课件下载
  10. C#常用的文件操作 (转)
  11. python做系统查人的往来的信息_L01-04:python查询员工信息表练习
  12. Python3常用正则表达式
  13. 修改web.conf不重启服务的方法
  14. 张小庆,在路上(2)
  15. php全部大写字母,在PHP中,使用()函数来将全部字母转换为大写
  16. 风格迁移篇---SAnet:风格注意网络下的任意风格转换
  17. 常用c语言代码大全,C经典程序代码大全.docx
  18. java specification_java规范(Java specification).doc
  19. 广义表(Generalized Lists)
  20. pymongo 基本操作

热门文章

  1. 四、中英翻译、歌词、藏头诗、智能聊天
  2. 短视频SEO矩阵系统源码/系统搭建
  3. 产品经理能力提升计划(高频面试问题)
  4. jeecg3.5中为dgCol标签增加自定义格式化列中的数值的功能
  5. 科学等于艺术,艺术等于科学
  6. 基于文本服务框架的拼音输入法研究与实现
  7. kali中爆破zip压缩包密码
  8. java kafka消息的发送与接收
  9. Qt编写云台仪表盘控件
  10. Nwafu-OJ-1429 Problem Z C语言实习题五——4.用指针实现数据位置调整