一直使用WordPress搭建博客,最近频繁收到PHP版本过低的提示,而且访问速度也越来越慢。痛定思痛,决定放弃数据库和PHP,彻底转向静态网站。
对比了几款静态页面生成工具,最终选择了 Hugo。其实 https://gw.xkonglong.com 用的是 Hexo,但感觉功能有些简陋,而且据说速度不如 Hugo。之前也动过几次切换的念头,但因为工作忙、网站还能凑合用,就一直“得过且过”……
直到最近,WordPress 即将升级到 7.0,还要加入 AI 能力,资源占用只会更高。再加上前几天服务器突然崩溃了一次,终于下定决心:抽时间换成静态网站。
基本思路
WordPress 导出 Markdown 文章 → Hugo 生成静态页面 → 发布。听起来很简单?实际操作下来,一路都是坑。
第一个坑:WordPress 转 Markdown
一开始图省事,用了 WordPress 自带的导出 XML 功能,然后配合 wp2hugo 工具生成 Markdown。结果一团糟——大量 HTML 标签无法正确转换成 Markdown 格式。
最后老老实实安装了开源插件 wordpress-to-hugo-exporter。虽然需要手动安装插件(一开始嫌麻烦没选它),但事实证明——只有它的转换效果最好。
第二个坑:Markdown 图片路径解析
插件生成的 Markdown 文件会自带同名文件夹,结构如下:
posts/wordaddin
├── index.md
└── image
├── wordaddin.png
└── wordaddin1.png
一开始觉得挺完美。但生成静态页面后才发现:文章页没问题,列表页的图片路径全乱了。
在文章页中,image/wordaddin.png 被正确解析为 ……/posts/wordaddin/image/wordaddin.png,图片正常显示。但在列表页中,路径变成了 ……/posts/image/wordaddin.png,图片直接 404。
查阅 Hugo 文档,官方推荐将所有图片放在 \static\images 目录下。于是求助 AI,写了一段 Python 脚本:批量替换 Markdown 中的图片路径,把所有图片移动到 \static\images 文件夹,并按 “文档名称_序号.png” 的规则重命名,避免重名冲突。
第三个坑:Python 代码解析不全
由于以前在 WordPress 中使用了各种相对路径和绝对路径的混搭,导致部分转换后的 Markdown 链接和图片没有被完整迁移。有些图片点击后还会跳转到旧站点的绝对路径……
又花了一整天人工找错和修改。 如果舍得砸 Token,其实完全可以丢给 AI 全自动处理——这是事后才悟出的道理。
不算坑的“小折腾”
至于 Hugo 文档的学习、配置,以及主题的挑选、测试、修改——这些不算坑,但也花了不小精力。整个过程前前后后用了 两天 时间,成功将一个 PHP + MySQL + WordPress 的博客,变成了纯静态网站。
最终效果
网站速度飞快,资源消耗极低。再也不怕服务器崩溃了。