当前位置:首页 > AI技术 > 正文内容

开发如何清理WordPress的未标签和分类 wp terms关联删除清理案例|Duuu笔记

admin2个月前 (04-08)AI技术56

基于真实项目经验的前端实战分享

安全清理WordPress未用标签/分类须严格按三步执行:先删wp_term_relationships中无对应文章的记录,再删wp_term_taxonomy中count=0且taxonomy为category或post_tag的记录,最后删wp_terms中无对应term_id的记录。

WordPress未用标签/分类为什么删不干净

直接执行

delete from wp_terms

会破坏数据库一致性,因为

wp_terms

表本身不存“是否被使用”的状态,它只靠

wp_term_taxonomy

wp_term_relationships

关联维系。你删了

wp_terms

里的某条记录,但对应

wp_term_taxonomy

还在,甚至可能指向一个不存在的

term_id

,后续后台编辑分类、调用

get_terms()

都可能报错或返回空。

安全清理的三步关联删除顺序

必须按依赖关系逆向清理:先清关系,再清分类元数据,最后清术语本身。顺序错一步,就会留下孤儿记录或触发外键约束(如果启用了 InnoDB 外键)。

第一步:删掉所有没被任何文章/页面/自定义类型引用的

term_taxonomy_id

关联 —— 即清空

wp_term_relationships

中无人认领的项

第二步:删掉

wp_term_taxonomy

count = 0

taxonomy IN ('category', 'post_tag')

的记录(注意:不要删

nav_menu

post_format

类型,它们逻辑不同)

第三步:删掉

wp_terms

中那些

term_id

不再出现在任何

wp_term_taxonomy.term_id

里的行(即已无分类/标签元数据挂载的术语)

SQL语句怎么写才不翻车

别手写 DELETE 嵌套子查询去一次清完——MySQL 5.7+ 对同一张表的子查询 DELETE 有限制,容易报错

You can't specify target table for update in FROM clause

。分三步执行更稳:

DELETE tr FROM wp_term_relationships tr

LEFT JOIN wp_posts p ON tr.object_id = p.ID

WHERE p.ID IS NULL;

DELETE tt FROM wp_term_taxonomy tt

WHERE tt.count = 0

AND tt.taxonomy IN ('category', 'post_tag');

DELETE t FROM wp_terms t

WHERE NOT EXISTS (

SELECT 1 FROM wp_term_taxonomy tt WHERE tt.term_id = t.term_id

);

执行前务必备份数据库;

wp_term_relationships

表很大时,第一条语句可能锁表较久,建议在低峰期操作。

插件和 WP-CLI 方案的隐藏风险

很多插件(比如 “Term Management Tools”)或 WP-CLI 命令(如

wp term list --format=ids --count=0

+

wp term delete

)看似方便,但它们默认只删

wp_term_taxonomy

wp_terms

,跳过

wp_term_relationships

清理。结果就是:前台查不到标签,后台却仍显示“× 个文章已关联”,点进去却 404 或空白——因为关系记录还在,只是对应的文章已被删或状态异常。

ima.copilot

腾讯大混元模型推出的智能工作台产品,提供知识库管理、AI问答、智能写作等功能

下载

真正干净的清理,绕不开直连数据库跑那三段 SQL。WP-CLI 的

wp term delete

只适合删单个明确无用的标签,批量清理时它不会自动判断是否“真没人用”。

最常被忽略的是:自定义文章类型、产品(WooCommerce)、问答(bbPress)等扩展可能注册了自己的 taxonomy,它们的

count

字段未必实时更新,得先运行

wp term recount

或对应插件的修复工具,否则

count = 0

不代表真没人用。

相关文章

Unity 机器学习 基础

ML-Agents 资产导入 Unity 场景创建 Unity 代码部分 Anaconda 执行 rollerball_config.yaml 机器学习逻辑处理...

神经网络分类总结

从网络性能角度可分为连续型与离散型网络、确定性与随机性网络。 从网络结构角度可为前向网络与反馈网络。 从学习方式角度可分为有导师学习网络和无导师学习网络。 按连续突触性...

神经网络中的单层神经网络

神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。 看一个经典的神经网络。这是一个包...

几种主要的神经网络

卷积神经网络的输入为二维的像素整阵列,输出为这个图片的属性,当网络训练学习后,所输入的图片或许经过稍微的变换,但卷积神经网络还是可以通过识别图片局部的特征而将整个图片识别出来。 :该层...

深入理解优化:如何利用 Gemini 3.1 的阶梯计费策略?企业级大规模调用实务完全指南|Duuu笔记

需深入理解Gemini 3.1阶梯计费与调用联动关系,通过识别阶梯区间、请求级Token预估截断、多模型路由调度、响应缓存去重、项目拆分配额绑定五种路径优化成本。 ☞☞☞AI 智能聊天, 问答助手,...

前端开发实战详解:骡子快跑怎么注册账号 骡子快跑账号注册流程最佳实践|Duuu笔记

骡子快跑注册仅需1分钟,但激活码需从Discord指定频道获取,输错3次将锁账户24小时;积分与注册邮箱强绑定且不可更换;部分地区即使注册成功也无法运行Agent。 ☞☞☞AI 智能聊天, 问答助手...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。