WordPress 小窍门:如何在后台快速清除所有过期草稿

过期草稿多了,后台卡顿怎么办?

我之前帮一个做五金配件的客户优化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代码,一键轻松清理,像我帮客户做的那样,后台速度蹭蹭上涨。赶紧试试吧,动手就能看到效果。

滚动至顶部