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

为什么要清理过期草稿?

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

外贸建站实战经验

什么是“过期草稿”?

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命令行工具写脚本,批量清理更高效。

希望这个小窍门帮你轻松搞定后台清理,避免积攒太多没用的草稿拖慢速度。遇到类似问题,直接用代码批量操作,工作效率嗖嗖提升!

滚动至顶部