WordPress:所以爱会消失对不对
用 WordPress 写博客已经一年了,从最开始感叹 WordPress 的功能强大到现在抱怨各种小问题,感觉 WordPress 似乎不适合我。正好最近服务器该续费了,就考虑着换个平台。
- 慢,对服务器要求高
- 对个人博客来说太重了,难以定制化
- 插件很多很丰富,另一方面也不可避免存在各种冲突
- 缺乏版本控制
这次调研了一下 Typecho、Hexo、Hugo、Gatsby 几个平台,最后的选择是 Hexo。
去年搭博客的时候也考虑过 Hexo,当时第一眼觉得 Hexo 过于简陋,而且那时候对 Git 的使用还不熟悉,所以就放弃了。但现在用了 WordPress 之后,觉得 Hexo 可能才是最适合我的。
- 原生支持 Markdown
- 静态页面,不需要额外服务器
- 每个细节可高度定制化
- 轻,可以享受尽在掌握的感觉
向 WordPress 告别
如果你有一个不错的服务器,或是对 Git 不熟悉、更偏爱成熟的产品,那么 WordPress 还是一个很不错的选择,以下的一点点经验可能对你有用。
使用的主题
Adams 单栏,白底黑字,最简洁
Apex 双栏,顶部有个艺术字体 logo,使用时间最长
GeneratePress 双栏,比较常规
Twenty Fifteen 双栏,来自 WordPress 官方,也很喜欢
使用的插件
Autoptimize 通过优化 CSS、JS、图像、Google 字体等来加速网站,感觉优化效果一般。
BackWPup 可以备份数据库、插件等等,同时自动上传到 Dropbox 网盘上(Dropbox 有 2GB 的免费空间),推荐。虽然 WordPress 的安全性比较高,但网站备份还是很重要的。备份的数据暂时没用上,但看着就很安心。
BCD Upcoming Posts 可以在侧栏添加一个小部件,显示在草稿栏中的文章标题,用来做一个预告。
Featured Image from URL | FIFU 使文章的特色图片(展示在首页的缩略图)支持图床外链。
Jetpack WordPress 官方出品的插件,集成了速度优化、访客统计、社交网络分享、攻击保护等等功能,主体免费,有氪金选项。但是比较臃肿,而且服务器在国外,可能会拖慢速度。
Post Views Counter 显示文章、页面的浏览次数。
Space Lover 在中英文间添加空格。
Table of Contents Plus 自动创建文章目录。
WP Editor.md “或许这是一个 WordPress 中最好,最完美的 Markdown 编辑器” 支持实时预览,支持语法高亮,支持 emoji,支持 LaTeX,支持 sm.ms 图床,开发者反馈非常及时。
WP Statistics 更专业的统计分析插件,详细地记录了访客 IP、浏览器等信息,小博客还是没必要了。
WP Super Cache 一般来说 WordPress 每次访问都需要动态查询、生成,这个插件能够预先生成静态文件,这样就可以减轻服务器负担,实测对速度优化帮助比较大。
一些经验
给网站测速的两个工具: https://developers.google.com/speed/pagespeed/insights/ https://gtmetrix.com/
虽然 WordPress 内置了比较完善的媒体管理库,但是仍然推荐写博客时使用图床外链,一方面能加速,把图片资源分离开;另一方面可迁移性,遇到我这种想给博客搬家的,图片资源直接可以继续使用了。
关于 WordPress 的特色图片,有的情况下会在文章内页多显示一次,临时解决办法是编辑主题的
content.php
文件,注释掉featured_image()
函数一些用 Markdown 解决不了的格式,可以直接用 HTML 写。比如插入图片的时候加入标注,或者让表格居中。
保存快照
数据都导出备份后,如果对这个博客还留有一丝怀念,想多截几张图,我找到了一个不错的工具,能把整个网站爬下来,包括源码内的 css、静态文件之类的。SiteCopy,很优雅,感谢作者。
安装依赖的时候注意 functools 已经集成在 Python3 里面了,报错可以直接忽略。
博客迁移
从 WordPress 到 Hexo 的迁移教程可以参考官方的hexo-migrator-wordpress
插件,文档:https://hexo.io/zh-cn/docs/migration。
当然,这个插件并不能完美地实现 WordPress->Hexo 的数据转换,很多内容还需要手动检查。
如果碰到表格格式转换的问题,可以试试这个小工具:https://tableconvert.com/
我的 WordPress 服务器在 2020 年 11 月 21 日晚正式关闭。
初识 Hexo
参考文档
官方文档:写得比较烂。
轻松使用 Hexo 建站:非常棒,从安装到主题定制,推荐。
经常使用的命令:
hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至 public 目录
hexo server #开启预览访问端口(默认端口 4000,'ctrl + c'关闭 server)
hexo deploy #将 deploy 目录部署到 GitHub
hexo clean #清除 database 和 public 文件夹
正在使用的插件
自动刷新 找了个插件 hexo-browsersync 插件,能让浏览器实时响应文件更改(包括文章、主题修改)。
现在的习惯是命令行
hexo clean && hexo g && hexo s
,然后浏览器和 Vs Code 分屏,所见即所得,写完之后hexo d
传上云端,非常快乐。中英文空格
如果你跟我一样,每次看到网页上的中文字和英文、数字、符号挤在一块,就会坐立难安,忍不住想在它们之间加个空格。这个外挂(支援 Chrome 和 Firefox)正是你在网路世界走跳所需要的东西,它会自动替你在网页中所有的中文字和半形的英文、数字、符号之间插入空白。汉学家称这个空白字元为「盘古之白」,因为它劈开了全形字和半形字之间的混沌。另有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。与大家共勉之。 https://github.com/vinta/pangu.js
在 WordPress 上使用的是 Space Lover,在 Hexo 上尝试了"hexo-pangu-spacing"、"hexo-filter-auto-spacing“两个插件,在我这里好像兼容性都一般。
最后使用的是 VS Code 上的 Pangu-Markdown 插件,也算不错的解决方案。
LaTeX 因为 Markdown 和 LaTeX 的语法是有冲突的,在 WordPress 中使用的 MD 插件能较好地兼容 LaTeX 语法,但现在使用的主题上没有适配这个功能。
更换渲染工具、修复转义问题啥的,本已做好大战三百回合的准备,没想到五分钟就搞定了。非常感谢这篇博客:让 Hexo 支持 LaTeX 公式。
注意想要打“$”符号本身的时候,前面要加个“\\”防止转义。
代码高亮 选择的是 hexo-prism-plugin 插件,但是比较奇怪,这个插件会把花括号解析为
{
、}
,这个问题的解决方案可以参考 这篇博客。在
node_modules/hexo_prism_plugin/src/index.js
文件中的const map
添加两行:const map = { ''': '\'', '&': '&', '>': '>', '<': '<', '"': '"', '{': '{', '}': '}' };
评论 关于 Hexo 上的评论系统,网友们给了很多横评,一开始选择的是 来必力,墙内可访问,而且有后台可以管理。虽然不支持匿名,提高了点门槛,不过倒是可以减少垃圾评论。一个缺点是不支持评论导入和导出,所以就只好告别原来 WordPress 上的评论啦。
但是使用了几天,发现日常访问实在是太慢了,无奈换了个平台。现在使用的是 Valine,支持匿名,简洁到没有后台,删除和管理评论直接操作数据库,但对垃圾评论的管理好像比较麻烦。没学过前端的我折腾了半天,终于把评论植入进来了。由于是直接操作数据库,所以努力了一下,成功把原来的评论也导入进来了。
延迟加载 找到一个 hexo-lazyload-image 插件,结果用了之后比原来加载还慢,不懂,下次研究研究。
访客记数 使用的是 不蒜子 插件,和评论系统差不多,都是“一行脚本+一行标签”搞定。但是存在一个bug:
safari(包括移动端的safari)浏览器页面pv统计问题,如下,因为Safari浏览器referer在文章页面时也上送的域名(而单个页面的pv统计是根据页面路径,即上送的referer),所以此时页面的pv返回的站点的pv值。暂时没解决方法,可自行搜索解决方案构造正确的referer值。对于此问题可以换个浏览器看哇,比如Chrome,哈哈。 来自:https://zzzeros.gitlab.io/blog/posts/89986481/