我现在发 WordPress 文章,最怕的已经不是写得慢一点,而是文章明明已经公开了,我才看到一串返工在后面排队。

最常见的不是大故障,反而都是一些很碎、但很烦的小事。比如标题和正文都没问题,结果 slug 撞了,线上被自动补成了 -2;比如正文出来了,首页也能点开,结果分类页没有封面;再比如文章页是新的,首页和分类页还挂着旧缓存,读者一看会以为根本没更新。单看每一件都不算大问题,可小站没人替你兜底,这些返工最后都会回到自己头上。

我后来越来越觉得,发文这件事不能只盯着“有没有发出去”。真正省时间的,不是发布按钮按得快,而是把该挡住的返工尽量挡在发布前。

WordPress 自己的接口其实把这些关键点写得很清楚。/wp/v2/posts 这个接口,文章的 slugfeatured_mediacategories 都是正式字段。也就是说,技术上它从来不是“发出去再看”的事,而是可以在发布流程里提前定好的事。另一个很容易被忽略的点,是 WordPress 核心里 wp_unique_post_slug() 这个函数。它会保证已发布文章的 slug 唯一,如果撞了,就会在后面补 -2-3 这种后缀。更要命的是,官方文档还专门写了,草稿和 pending 状态默认不做这个唯一性检查。翻成站长能听懂的话就是,你在本地或草稿里看着没问题的 slug,真正公开时不一定还是那一个。

所以我现在发文前,第一眼先看 slug,不先看排版。

我会先问自己两件事。第一,这个题最近 7 天站里有没有明显同角度的文章。第二,这个 slug 线上是不是已经有人占了。前一个是防重复选题,后一个是防链接返工。因为只要 slug 公开以后变成了 -2,你后面再去补内链、做分享、发目录,都会开始别扭。尤其个人站文章不算特别多的时候,链接本身就是资产,最好别上线以后才发现自己把标准链接弄歪了。

第二个我会卡得很死的,是特色图。

很多人以为特色图只是首页好不好看的问题,我现在不这么看。特色图一旦漏了,受影响的不只是文章页那一张图,首页卡片、分类页缩略图、分享出去的第一眼印象,往往都会一起受影响。WordPress 的 REST 文档里把 featured_media 单独列成文章字段,不是白放在那里的。控制器里处理这个字段时,本质上就是把你传进去的媒体 ID 设成文章缩略图;如果这个 ID 无效,接口会直接报错。也就是说,真正稳的检查不是“图片我上传过了”,而是“发布结果里的 featured_media_id 到底是不是一个有效值”。

我现在的做法很土,但是特别省返工。封面图一定在本地先写进 frontmatter 的 cover 字段,让发布脚本统一压缩、上传、再设置特色图。发布以后不靠感觉判断,而是直接看返回结果里的 featured_media_id。只要这个值是空、0 或者 None,我就不把这次发布当完成。因为经验上看,很多人线上返工不是不会发,而是太早把“差不多行了”当成“已经好了”。

第三个我现在更看重的,是分类不要临门一脚再随手点。

这几天我自己就在按分类轮转写,越写越觉得分类不是装饰,它是在决定这篇文章后面会出现在哪些入口里。你如果正文写的是技术流程,结果分类挂去了别的桶,后面首页、分类页、相关文章的承接都会跟着跑偏。前面那篇 WordPress 文章一多,我不再临场补内链,先做一张链接地图 讲的是文章之间怎么接力;到了发布这一步,分类其实就是入口侧的路标。入口先挂错,后面再补链接,效果也会被打折。

最后一个是很多人明明知道,却老是放到最后吃亏的缓存。

我现在对缓存的理解很简单:文章页 200,不等于这次发布已经真正完成。尤其前面挂了 CDN、主题缓存、首页缓存以后,最容易出现的情况就是文章页先出来,首页和分类页还在用旧内容。前两天我在处理首页和分类承接时,这种情况就反复出现过,所以现在我发布完一定会顺手看三个地方:文章页是不是 200、首页能不能看到新卡片、对应分类页有没有封面缩略图。这个检查听起来笨,但它比事后解释“其实发出去了,只是缓存没刷新”省事得多。

如果你问我现在发一篇 WordPress 文章,最小的一套检查顺序是什么,我会说就按这个来:先查题有没有撞,再查 slug 会不会重;封面图先在本地定死,发布后盯 featured_media_id;分类别乱挂;最后再去看首页、分类页、文章页是不是都真的更新了。顺序一旦固定下来,发文就不会每次都靠临场反应。

这也是我最近越来越认同的一件小事。网站发布不是“写完就发”,而是“写完以后,把不该留到线上的问题先清掉”。你把返工挡在发布前,整条链路会轻松很多,心态也稳很多。多复盘、多对账、多收款。