You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量删除WordPress特定分类或指定日期前的所有文章?

批量删除WordPress特定分类/指定范围文章的解决方案

MySQL语句(无需额外工具,直接在数据库管理工具执行)

重要提示:执行任何删除语句前务必先备份数据库,避免不可逆的数据丢失;如果你的WordPress表前缀不是默认的wp_,需要把语句里的wp_替换成自己的表前缀。

删除特定分类下的所有文章

DELETE p, tr
FROM wp_posts p
JOIN wp_term_relationships tr ON p.ID = tr.object_id
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.term_id = YOUR_CATEGORY_ID  -- 替换为目标分类ID
AND p.post_type = 'post'
AND p.post_status IN ('publish', 'draft', 'pending', 'private');

这条语句会同时删除指定分类下的文章,以及文章和分类的关联关系数据,避免数据库残留无效数据。

删除指定日期之前的所有文章

DELETE p
FROM wp_posts p
WHERE p.post_type = 'post'
AND p.post_status IN ('publish', 'draft', 'pending', 'private')
AND p.post_date < 'YOUR_DATE';  -- 替换为要保留的最老文章日期,格式如 '2020-01-01 00:00:00'

删除指定ID之前的所有文章

DELETE p
FROM wp_posts p
WHERE p.post_type = 'post'
AND p.post_status IN ('publish', 'draft', 'pending', 'private')
AND p.ID < YOUR_MIN_ID;  -- 替换为要保留的最小文章ID(删除所有ID小于此值的文章)

如果需要同时清理关联的评论数据,可以加入JOIN wp_comments c ON p.ID = c.comment_post_ID,把DELETE p改成DELETE p, c即可。


WP-CLI命令(需安装WP-CLI)

适合服务器支持WP-CLI的场景,大数量删除建议加--batch参数分批次执行,避免超时。

删除特定分类下的所有文章

# 替换YOUR_CATEGORY_ID为目标分类ID,--batch=100表示每次删除100篇
wp post delete $(wp post list --category=YOUR_CATEGORY_ID --post_type=post --post_status='publish,draft,pending,private' --format=ids) --force --batch=100

--force参数会直接删除文章,跳过回收站;如果不需要跳过,去掉这个参数即可。

删除指定日期之前的所有文章

# 替换YOUR_DATE为要保留的最老文章日期,格式如 '2020-01-01'
wp post delete $(wp post list --post_type=post --post_status='publish,draft,pending,private' --date-before=YOUR_DATE --format=ids) --force --batch=100

删除指定ID之前的所有文章

# 替换YOUR_MIN_ID为要保留的最小文章ID
wp post delete $(wp post list --post_type=post --post_status='publish,draft,pending,private' --exclude=YOUR_MIN_ID.. --format=ids) --force --batch=100

内容的提问来源于stack exchange,提问作者BigTechCensorVictim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:10:36