WordPress 博客迁移 Jekyll 小记
用了一个周末的时间写了一个 Jekyll 主题,把我的 WordPress 博客搬了过去。
我一直都有一个 WordPress 博客。和很多人一样,这个博客也是我逐渐开始自学转码,开始玩 VPS 时候(2019年)最先接触到并部署的站点。因为写作是一直的爱好,就把大大小小的随笔都扔到了上面。
几年来,我的 IT 水平突飞猛进,逐渐意识到 WordPress 其实不太适合我这种纯文字为主的站点。很多 PHP 才能做到的高级动态功能我都没用上,反而各类 PHP 的使用还加剧了内存消耗,降低了读者访问速度和阅读体验。干脆把这个博客也迁移到 Jekyll 得了。
提取 WordPress 内容为 Jekyll 所需格式
好在 GitHub 早年为了推自家的 GitHub Pages,做了个 WordPress 插件 WordPress to Jekyll Exporter。坏消息是,
Docker 在容器中调试 WordPress
使用 Docker 命令 docker exec -it <container_id> bash
进入该容器的 Shell 界面。
一路 cd 进入到 /var/www/html/wp-content/plugins/jekyll-exporter/
里,根据 WordPress to Jekyll Exporter 官网的建议使用命令行运行。
1
php jekyll-export-cli.php > jekyll-export.zip
发现提示内存不足。修改配置文件把允许读取内存从64MB提升到256MB。
此外,还发现其他插件有影响该插件运行的可能,于是试图关闭其他插件。
WordPress 的原理是只看 wp-content/plugins/
里的内容。所以只要把插件目录用 mv
指令改名,然后弄一个新的 plugins
目录,再把需要的插件复制一份进去就好。
Docker 部署下操作容器内的文件
依然提示有 bug,似乎是某个 php 的函数无法顺利运行。搜索 GitHub 的项目 Issue 区,看到了一个 Issue 提起此问题。
原来是少添加了一条引用的函数。只要把 include "../../../wp-admin/includes/file.php";
加到 jekyll-export-cli.php
的最上方就好。非常可笑的是,十年过去了,这招居然还适用。
然而,我的 WordPress Docker 容器里并没有 vi
命令软件,没法直接编辑 jekyll-export-cli.php
。这里就只能曲线救国了:
1
docker cp <container_id>:/var/www/html/wp-content/plugins/jekyll-exporter/jekyll-export-cli.php ~
即把该文件复制到我的 VPS 的用户根目录下。修改完文件后把 cp
命令的源地址和目标地址交换,再次使用即可传回容器内。
这次再使用 php jekyll-export-cli.php > jekyll-export.zip
,终于成功了。
编辑文章元数据
这个插件导出的文章 markdown 文件的文件名都是一串乱码,然而文件内的 YAML 头文字 title
都是对的。这种事情用一个 Python 脚本处理再好不过了。现如今,这种前人已经做过无数次的文本处理小场景问题肯定用不着自己重新造轮子。用 ChatGPT 写 Python 脚本还是很方便的,直接问:
write me a python script to change all my .md files’ title from “yyyy-mm-dd-xxxxxx” to “yyyy-mm-dd-$title” according to the yaml front matter in each files. they both have
title
attribute in the yaml frontmatters
出来的内容复制粘贴,稍微改一下目录所在地址,直接在 VS Code 下运行,一点 bug 都没有。
我还类似地问 ChatGPT 写脚本,添加了一些 YAML 元数据,脚本的表现都很好。
AI 确实取代了一部分所谓程序员的工作——然而,这只是小场景的切入,是最容易被模仿并且用自然语言表达的。仅仅会做这些是没法完成大型工程的。反倒是某些希望能使用编程提升自己工作效率的文本处理人员会学一点这些——不过也可以由 GPT 代劳了。由此看来,AI 目前取代的其实依然只是低级文员的工作。
山寨制造 Jekyll 博客主题
一直没下定决心把主博客搬迁到 Jekyll 的原因还有一个,就是没有找到心仪的适合随笔类博客主体。姑且先山寨之前在 WordPress 上使用的那个主题随手做一个吧,也自己看习惯了……毕竟博客很大的程度上就是给自己看的小玩具嘛。
ChatGPT 做前端小组件什么的还是很方便的。给出 prompt,导航栏的下拉菜单和主页尾端的分页菜单这种一下就写好,再稍微手动调整下 CSS 就好。
很多实用 HTML 小组件比如分页和图片包装,直接抄了 Chirpy 的代码稍微改改就用。说实在的,我觉得 Chirpy 的那一套设计都可以当作 Jekyll 主题制作的规范了,功能实在是全面到不像话。
具体怎么制作的主题,遇到了以后再单出一篇细讲吧。也许那时候抄袭完善得差不多了可以放出来给大家用。现在还有很多想要的功能没做出来,CSS 之类的也写得很混乱,不方便放出来。