想把「前端」和「frontend」两个标签并成一个,把前者别名改成 frontend,保存直接报「另一个项目已使用该别名」。改成 frontend-2 就存进去了,两个标签还是分开的。日志里能对上时间点,这种反而好排。
同一分类法里 term slug 必须唯一,wp_update_term 在写入前会查重,撞上就返回 term_exists。合并要动的是对象关系表,改别名只是换个名字,不会把文章归到一处。这一点先确认清楚,后面就不用反复试。
SELECT term_id, slug, name FROM wp_terms t JOIN wp_term_taxonomy tt USING (term_id) WHERE tt.taxonomy = 'post_tag' AND t.slug = 'frontend';
「term slug 重复」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
处理上按这个顺序:先确定保留哪个 term_id,把它作为合并后的目标;把另一个标签下的文章关系逐条指到目标 term,再删除空掉的标签;最后重算 count,后台的计数不会自己更新。
结果对不对很好判断,标签列表里只剩一个同名标签,文章数等于两边相加,归档页能正常打开。
