为什么要清理过期草稿?
上个月帮一个做五金配件的客户优化网站时,发现他们后台草稿数量爆炸,过期草稿堆积影响数据库性能,后台加载变慢。清理这些无用的草稿,能让网站更轻快,数据库也更整洁。

什么是“过期草稿”?
WordPress中,草稿指的是未发布的文章或页面。过期草稿指的是很久没有编辑或更新,且不打算发布的旧草稿。默认后台没有一键清理功能,得自己动手。
怎么快速清除所有过期草稿?
用代码最省事,直接在主题的 functions.php 或自定义插件里添加一个小脚本,执行一次就能批量删除。
步骤一:备份数据库
这一步不能省,防止误删重要内容。用你熟悉的数据库工具导出备份,或者用插件备份。
步骤二:添加清理代码
下面这段代码会删除所有状态是 ‘draft’,且最后修改时间超过30天的文章草稿。你可以根据需要调整时间范围。
<?php
function delete_expired_drafts() {
global $wpdb;
// 定义过期时间,30天前
$expiration = date('Y-m-d H:i:s', strtotime('-30 days'));
// 查询所有过期草稿ID
$drafts = $wpdb->get_col( $wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_status = 'draft' AND post_modified < %s",
$expiration
));
if (empty($drafts)) {
return '没有找到过期草稿。';
}
// 删除每个草稿
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true); // true为永久删除
}
return count($drafts) . ' 个过期草稿已被清理。';
}
// 你可以通过调用这个函数来执行清理,比如放在某个后台操作钩子里
echo delete_expired_drafts();
?>
步骤三:执行清理
把代码放到主题的 functions.php 里,刷新后台页面一次。执行完毕后,记得把代码删掉或注释掉,避免重复执行。
问答:删除草稿会不会误删重要内容?
不会,因为代码只针对 post_status = 'draft' 并且最后修改时间超过30天的草稿。只要你平时发布前会保存草稿且定期检查,误删风险极低。
问答:可以调整清理时间吗?
当然可以!把 strtotime('-30 days') 改成 strtotime('-60 days') 或者你想要的任意时间段就行。
小提示
- 如果你用的是自定义文章类型,请在SQL语句里加上
AND post_type = '你的文章类型'。 - 可以结合WP-CLI命令行工具写脚本,批量清理更高效。
希望这个小窍门帮你轻松搞定后台清理,避免积攒太多没用的草稿拖慢速度。遇到类似问题,直接用代码批量操作,工作效率嗖嗖提升!