wp2hugo:WordPress 到 Hugo 的迁移利器,301 Star

wp2hugo:WordPress 到 Hugo 的迁移利器,301 Star

文章目录

  • wp2hugo:WordPress 到 Hugo 的迁移利器,301 Star

wp2hugo:WordPress 到 Hugo 的迁移利器,301 Star

wp2hugo 是一个用 Go 编写的 WordPress 到 Hugo 静态站迁移工具。作者 ashishb 在迁移个人博客时遇到了各种边角情况,于是写了这个工具。目前项目在 GitHub 上获得了 301 个 Star。

什么是 wp2hugo

wp2hugo 把 WordPress 的 XML 导出文件转换成 Hugo 站点的 Markdown 文件。虽然是针对 Hugo 设计的,但生成的 Markdown 文件也可以在 Mkdocs、Jekyll 等其他静态站点生成器上使用。

它编译成单个可执行文件,不需要安装任何依赖就能运行。相比那些跑在服务器上的 PHP 迁移插件,wp2hugo 在性能上有明显优势。大博客几分钟就能处理完,而 WordPress 插件可能会超时、内存溢出甚至全面失败。

能迁移什么

这个工具覆盖了迁移过程中可能遇到的方方面面:

  • 文章和页面:支持层级页面结构,使用 Hugo 的 page bundles
  • 分类系统:标签、分类法、自定义分类法全部保留
  • 评论:旧评论自动迁移,需要手动在 Hugo 主题中插入代码片段
  • URL 和永久链接:所有链接包括媒体链接都做正确映射,还能生成 Nginx 重定向配置
  • RSS 源:保留原有的 UUID,订阅者不会看到重复条目
  • 草稿状态:草稿和待审核文章保留其发布状态

短代码和内容处理

WordPress 的特色之一是一大堆短代码和 Gutenberg 块。wp2hugo 对这部分做了针对性处理:

  • WordPress 原生的 caption、audio、gallery 短代码都转成 Hugo 对应的格式
  • 表格目录块、代码块(保留语言分类信息)、文章摘要、more 分隔符
  • YouTube 嵌入(包括纯文本版和 WP YouTube Lyte 插件版)
  • Google 地图嵌入、GitHub gist 嵌入
  • iframe 嵌入
  • Gutenberg 块中的脚注、YouTube、图片和画廊

媒体文件处理

  • 下载嵌入文章中的图片,保持相对路径
  • 处理外部域名上的图片
  • 可选导入 WordPress 媒体库中的所有附件
  • 自定义附件标题导入到/data/library.yaml

安装和使用

有两种方式获取 wp2hugo。

下载编译好的二进制文件是最快的方式,从 GitHub Releases 页面下载对应系统的版本即可。

如果需要从源码构建:

git clone git@github.com:ashishb/wp2hugo.git cd wp2hugo/src/wp2hugo make build_prod ./bin/wp2hugo --source wordpress-export.xml --download-media

使用方式也很直接,从 WordPress 后台导出 XML 文件,然后运行一行命令:

wp2hugo --source wordpress-export.xml --download-media

wp2hugo 附带了一个叫 hugomanager 的实验性工具,功能包括 URL 自动生成、站点状态概览、图片压缩、backlink 分析等。

实际案例

项目 README 中列出了 20 多个成功迁移的站点,包括个人博客、技术站、中文和西班牙语博客。

商业使用

项目对个人和非商业用途完全免费。商业使用需要单独授权。

总的来看,wp2hugo 是一个针对性很强的工具,解决的是 WordPress 老用户迁移到 Hugo 过程中那些琐碎而头疼的问题。如果你正在考虑从 WordPress 搬家到 Hugo,这个工具值得一试。

是 WordPress 老用户迁移到 Hugo 过程中那些琐碎而头疼的问题。如果你正在考虑从 WordPress 搬家到 Hugo,这个工具值得一试。