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

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

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

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

安全清理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

不代表真没人用。

相关文章

什么是LLM?看这一篇就够了!

一、全套AGI大模型学习路线 AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能! 二、640套AI大模型报告合集 这套包含640份报告的合集,涵盖了AI大...

Unity 机器学习 基础

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

使用 ESP

针对该分类问题,我们使用了 Kaggle 手势识别数据集 中的一个开源数据集。原始数据集包括 10 个类别,我们只使用了其中 6 个。这些类别更容易识别,且日常生活中更有用,如...

跨平台机器学习:ML.NET架构及应用编程

平台上的一个机器学习框架,它提供了一套丰富的算法和工具,使得开发人员可以轻松地构建和部署机器学习模型。支持多种编程语言,包括等,这使得它成为跨平台机器学习的理想选择。的架构主要包括三个部分:数据读取、...

几种主要的神经网络

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

从入门到精通:前端开发之骡子快跑支持热点借势吗 骡子快跑节日营销文案生成|Duuu笔记

骡子快跑平台提供五步节日营销文案生成路径:一、调用内置32个节日模板库;二、输入热点事件触发动态生成;三、绑定自有素材库实现个性化延展;四、多角色视角协同输出;五、接入微信生态直发并校验合规性。 ☞...

发表评论

访客

看不清,换一张

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