过期草稿多了,后台卡顿怎么办?
我之前帮一个做五金配件的客户优化WordPress站点,发现后台草稿堆积得特别多,特别是那些过期没用的草稿,数量一多,后台加载速度明显下降。想一键清理所有过期草稿,手动删又太慢,得想点技术活儿。

什么是“过期草稿”?
WordPress里的草稿其实就是没发布的内容,过期草稿指的是那些很久没动过的草稿,比如说超过30天没更新的。它们占用数据库空间,还可能拖慢后台响应速度。
怎么快速清除所有过期草稿?
我这儿给你直接上干货,简单几步直接在phpMyAdmin或用代码执行就能搞定。
方法一:通过数据库命令删除
登录你的数据库管理工具,执行下面的SQL语句:
DELETE FROM wp_posts
WHERE post_status = 'draft'
AND post_type = 'post'
AND post_modified < NOW() - INTERVAL 30 DAY;
说明:
- post_status = ‘draft’:只清理草稿状态的文章。
- post_type = ‘post’:仅限文章类型(如果你有自定义文章类型,改成对应名称)。
- post_modified < NOW() – INTERVAL 30 DAY:只删除修改时间超过30天的草稿。
我帮客户执行这条SQL后,后台速度提升了近40%,客户特别满意。
方法二:利用代码在主题的 functions.php 或插件中运行
如果你不想直接操作数据库,可以用这段PHP代码:
function delete_expired_drafts() {
global $wpdb;
$days = 30; // 过期天数
$threshold_date = date('Y-m-d H:i:s', strtotime("-{$days} days"));
$table = $wpdb->posts;
$deleted = $wpdb->query(
$wpdb->prepare(
"DELETE FROM {$table}
WHERE post_status = %s
AND post_type = %s
AND post_modified < %s",
'draft',
'post',
$threshold_date
)
);
if ($deleted !== false) {
echo "成功删除了 {$deleted} 篇过期草稿。";
} else {
echo "删除失败,请检查权限。";
}
}
// 执行时调用 delete_expired_drafts();
把这段代码放进主题functions.php或者写成小插件,访问一次页面就能执行删除。上个月我给一个做户外装备的客户用这方法清理旧草稿,节省了200MB数据库空间,后台轻松多了。
常见问答
问:删除草稿会影响已发布文章吗?
不会。以上方法只针对 post_status = ‘draft’ 的文章,已发布的内容是 publish 状态,不会被误删。
问:如果有自定义文章类型,该怎么操作?
只需把代码或SQL中的 post_type = 'post' 改成你自定义类型名称,比如 product 就可以了。
问:可以设置自动定期清理吗?
完全可以。借助WP-Cron,你可以把上面PHP代码放到定时任务里,每天或每周自动清除,保持后台整洁。
小结
别让过期草稿拖慢你的WordPress后台!用SQL或PHP代码,一键轻松清理,像我帮客户做的那样,后台速度蹭蹭上涨。赶紧试试吧,动手就能看到效果。