删除 WordPress 数据库中所有文章及相关缓存内容,并获取被删除的文章 ID

AI
AI文摘 此内容由AI根据文章内容自动生成
AI Summary

教程演示

打开 Mysql 数据库,进入 phpMyAdmin面板,执行以下 SQL 查询

-- 1. 首先获取并保存所有要删除的文章ID
SELECT ID FROM wp_posts WHERE post_type = 'post';

-- 2. 删除文章的元数据
DELETE pm FROM wp_postmeta pm
JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.post_type = 'post';

-- 3. 删除文章的评论
DELETE c FROM wp_comments c
JOIN wp_posts p ON c.comment_post_ID = p.ID
WHERE p.post_type = 'post';

-- 4. 删除文章的评论元数据
DELETE cm FROM wp_commentmeta cm
JOIN wp_comments c ON cm.comment_id = c.comment_ID
JOIN wp_posts p ON c.comment_post_ID = p.ID
WHERE p.post_type = 'post';

-- 5. 删除文章本身
DELETE FROM wp_posts WHERE post_type = 'post';

-- 6. 清理缓存相关表(如果使用了常见的缓存机制)
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%';
DELETE FROM wp_options WHERE option_name = 'wp_postmeta_lazyload_cache';

执行步骤说明:

  1. 第一条查询会先显示所有要删除的文章 ID,你可以记录这些 ID
  2. 随后的查询会依次删除相关联的元数据、评论、评论元数据,最后删除文章本身
  3. 最后清理可能与文章相关的缓存数据

注意:执行这些操作前请务必备份数据库,以防意外情况发生。如果你的 WordPress 表前缀不是默认的wp_,请将上述查询中的表名替换为你的实际表前缀。

清理残留

执行以下 SQL 查询来重新计算并更新所有分类的文章数量:

-- 更新分类计数
UPDATE wp_terms t
JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
SET tt.count = (
    SELECT COUNT(*) 
    FROM wp_term_relationships tr
    JOIN wp_posts p ON tr.object_id = p.ID
    WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
    AND p.post_status = 'publish'
    AND p.post_type = 'post'
);
  1. 进入 WordPress 后台
  2. 打开任意一个分类进行编辑
  3. 不做任何修改,直接点击 “更新” 按钮
  4. 刷新分类列表页面,数量应该会更新
© 版权声明
THE END
点赞7分享
及时反馈~ 抢沙发

请登录后发表评论

    暂无评论内容