news 2026/7/8 14:21:22

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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,这个工具值得一试。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 14:20:51

.NET 程序保护实战系列 03 · 符号混淆:名称就是第一道防线

03 符号混淆:名称就是第一道防线 目录 为什么名称本身就能构成防线VTable:跨继承链的名称一致性NameService:ConditionalWeakTable 驱动的重命名引擎六种命名模式跨模块协同:ProtectionSession.RunRename引用追踪:I…

作者头像 李华
网站建设 2026/7/8 14:16:06

Windows 11 LTSC企业版安装微软商店:3分钟完整终极指南

Windows 11 LTSC企业版安装微软商店:3分钟完整终极指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否正在使用Windows 11 LTSC企业…

作者头像 李华
网站建设 2026/7/8 14:13:32

彻底告别DLL缺失噩梦:VisualCppRedist AIO一站式解决方案终极指南

彻底告别DLL缺失噩梦:VisualCppRedist AIO一站式解决方案终极指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经在安装新软件时突然弹出…

作者头像 李华
网站建设 2026/7/8 14:12:46

SpringBoot项目实践:如何优雅地处理全局异常

你见过这样的代码吗?Controller里密密麻麻的try-catch,每个业务方法都要包裹一层,catch之后写一堆重复的响应组装逻辑,还时不时忘记处理某个异常导致500飘红。这种“异常痛感”几乎是每个Spring Boot项目从原型走向生产的必经之路…

作者头像 李华