从wordpress迁移到hexo

作者注:本文将持续更新

本站已从wordpress迁移到hexo。本文记录迁移过程,仅供参考。
本文省略hexo/wordpress等基本知识。

一、wordpress导入

准备

  • wordpress:登陆后台,工具->导出,默认是所有内容。导出文件格式为xml。
  • wordpress:登陆后台,自行想办法下载图片等媒体资源。
  • hexo:安装导入工具,命令npm install hexo-migrator-wordpress --save

导入wordpress

打开命令行(使用git bash也行),进入hexo博客目录,执行:

1
hexo migrate wordpress wordpress_backup.xml

整理

整理导入的md文件工程量非常大,因为格式错乱了,要一一查找,慢慢整理。
查找包括“代码生活”的所有文件,将其剪切到上一目录的newcat下的code-life目录:

1
2
grep -rl "代码生活" * | xargs -I {} mv {} ../newcat/code-life

二、hexo主题修改

背景

因为本站已经运行了近9年时间,有大量的文章,且分类、文章URL已固定,为保证一致性,需要修改配置。

保持原有url地址

在_config.yml文件中修改链接,如下:

1
permalink: :category/:urlname.html

其中urlname为每个markdown文件中必须填写的一项(与原有文章URL一致)。category为分类名称(与原有文章分类名称一致)。为方便中英对照,需要做映射,修改或添加category_map:

1
2
3
4
5
6
7
category_map:
GNU/Linux程序: programming-under-linux
GNU/Linux系统: using-gnu-linux
Linux内核研究: linux-kernel
python: python
U-Boot随笔: porting-uboot
...

源文件目录设计

接上,在_post目录中,以英文名称创建目录,如programming-under-linux,该目录存放GNU/Linux程序分类文章。文章名称为“日期-中文.md”,在文章中填写title和urlname。
如此一来,存储时按日期排序,并能直观看到文章标题(因为是中文),实际链接地址则使用映射的英文,兼顾了各方需求,是一个不错的选择。当然,在实际编写时,会略显麻烦。下面是本文的一个示例:

1
2
3
4
5
6
7
8
9
10
---
title: 从wordpress迁移到hexo
urlname: from-wordpress-to-hexo
tags:
- web
categories:
- 网络/网站/web
date: 2019-03-31 14:06:04
updatetime: 2019-04-25 13:08:59
---

标签、分类修改

hexo的标签、分类为复数形式:tags和categories。需要修改为单数,具体如下:

1
2
tag_dir: tag
category_dir: category

网站地图

安装:

1
npm install hexo-generator-sitemap

配置:

1
2
3
# sitemap
sitemap:
path: sitemap.xml

xml文件地址为<网站地址>/sitemap.xml

RSS订阅

安装:

1
npm install hexo-generator-feed

配置:

1
2
3
4
5
# new add 2018.7.30
feed:
type: atom
path: atom.xml
limit: 30

xml文件地址为<网站地址>/atom.xml

文章加密

安装:

1
npm i hexo-blog-encrypt

配置:

1
2
encrypt:
enable: true

使用:在文章前面添加password: 123456。加密后,只能通过密码访问(不输入密码,右键查看源码无法看到真正内容)。

1
npm install hexo-breadcrumb 

结果:失败

参考修改

本小节列出本站参考的资源。感谢参考来源作者的工作。

另外一些是自己折腾的:

  • 文章作者姓名、头像展示。
  • 文章开头处:持续更新、尚未完结等字样。
  • 面包屑功能。
  • 网站提示语定期自动更新。

李迟 2019.3.31