删除 Typecho 中未关联的标签
前言
由于部分文章的删除,导致了博客的标签中遗留一些无用的标签,虽然在网页前端看不到,但是它实际上还是存在于数据库中,而且还被编入了索引。
例如:https://www.zcsouls.com/tag/{标签}/
因此我们可以通过操作数据库来删除这些“牛皮癣”。
操作步骤
步骤 1: 访问数据库
使用数据库管理工具(如phpMyAdmin、Adminer等)登录到你的数据库。
步骤 2: 确认标签和文章关联的表
Typecho通常使用以下两张表来存储标签和文章的信息:
typecho_metas
:存储标签(和分类)的信息。typecho_relationships
:存储文章和标签(或分类)之间的关联关系。
步骤 3: 执行SQL查询
以下的SQL查询将帮助你找出没有关联任何文章的标签,并删除它们。这里的查询假设你的表前缀是 typecho_
,这是Typecho的默认设置。如果你的表前缀不同,请相应修改。
DELETE FROM typecho_metas
WHERE type = 'tag'
AND mid NOT IN (
SELECT mid FROM typecho_relationships
);
详细解释
DELETE FROM typecho_metas WHERE type = 'tag'
:这一部分指定要删除来自typecho_metas
表中的记录,且这些记录的类型(type
)为“tag”,即标签。AND mid NOT IN (SELECT mid FROM typecho_relationships)
:这里使用子查询来找出typecho_relationships
表中存在的所有mid
(即标签的ID)。NOT IN
确保我们删除的是那些在关联表中没有出现过的标签的mid
。
步骤 4: 检查和维护
- 在执行删除操作前,可以先运行一个SELECT查询来查看将要被删除的标签:
sql SELECT * FROM typecho_metas WHERE type = 'tag' AND mid NOT IN ( SELECT mid FROM typecho_relationships );
- 确保上述查询只显示了那些确实没有被任何文章引用的标签后,再执行删除操作。
最后的提醒
操作数据库时一定要小心谨慎,确保所有操作都有备份!!!