在列表页用快速编辑把一篇从「前端」挪到「后端」,保存后文章只剩「后端」一个分类,原来挂着的「教程」「JavaScript」都不见了。日志里能对上时间点,这种反而好排。

快速编辑提交的是完整的分类数组,服务端按这个数组整体替换,没传上去的就当作要移除。批量编辑同样是覆盖语义,不会替你把旧分类留着。这一点先确认清楚,后面就不用反复试。

SELECT tr.object_id, t.name FROM wp_term_relationships tr
JOIN wp_term_taxonomy tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
JOIN wp_terms t ON t.term_id = tt.term_id
WHERE tr.object_id = 318 AND tt.taxonomy = 'category';

「快速编辑分类覆盖」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

处理上按这个顺序:改之前先记下原来的分类 ID,列表页的分类列可以直接看到;快速编辑里把要保留的分类一起勾上,不要只勾新增的那个;发现改错就从修订恢复,分类关系在修订里有单独记录。

结果对不对很好判断,文章编辑页里三个分类都在,列表页分类列显示为多个名字。

作者 9823189