讲师中心 微信公众号
AI工具推荐 视频效率加速

怎么清理WordPress的自动草稿和修订版本 wp_posts表瘦身

大宇同学_3841

大宇同学_3841

发布时间:2026-05-19 15:53:26

|

880人浏览过

|

来源于php中文网

原创

WordPress默认的自动保存和修订版本功能会生成大量auto-draft与revision记录,长期积累导致wp_posts表臃肿、查询变慢、备份膨胀;应通过直连数据库删除并添加post_type+post_status复合索引优化性能。

wp_posts 表里一堆 auto-draft 和 revision 是谁干的

wordpress 默认开启自动保存和修订版本,每次编辑文章、甚至点开编辑页没改就关掉,都会在 wp_posts 表里塞一条 auto-draft 或 revision 记录。长期不用清理,一张表几万行很常见——查询变慢、备份膨胀、迁移卡顿,都是它拖的。

这些记录本身不展示、不索引、不参与前台逻辑,纯属后台冗余数据。

  • auto-draft:用户点“新建文章”但没保存就离开,留下的空壳
  • revision:每次点击“更新”或自动保存生成的历史快照(默认不限数量)
  • 它们都占 post_status 字段,且 post_type 分别为 post/page 等主类型 + revision 或 auto-draft

直接 SQL 清理最稳,但必须绕开 WordPress 的钩子陷阱

别用插件一键清或 WP-CLI 的 wp post delete 命令批量删 revision——它们会触发 delete_post 钩子,可能激活主题/插件里的清理回调,反而写入新日志、发通知、甚至误删关联附件。

生产环境优先走数据库直删,绕过 PHP 层所有逻辑:

  • 先备份:mysqldump -u user -p dbname wp_posts > wp_posts_backup.sql
  • 删 auto-draft:DELETE FROM wp_posts WHERE post_status = 'auto-draft';
  • 删 revision:DELETE FROM wp_posts WHERE post_type = 'revision';
  • 执行后记得 OPTIMIZE TABLE wp_posts; 释放磁盘空间(InnoDB 下尤其必要)

注意:MySQL 8.0+ 默认禁用 sql_safe_updates,如果报错“safe update mode”,加条件 AND ID > 0 即可绕过,比如:DELETE FROM wp_posts WHERE post_type = 'revision' AND ID > 0;

想长期控量?关修订版不如限数量,关自动保存要权衡体验

全关 WP_POST_REVISIONS 或 AUTOSAVE_INTERVAL 不现实——编辑中途崩溃丢内容,用户会骂你。

WordPress API Pro
WordPress API Pro

生产级WordPress REST API集成,用于管理文章、页面、媒体、WooCommerce产品、Elementor内容、SEO元数据、ACF及JetEngine字段

下载
  • 限制修订版数量:在 wp-config.php 加 define('WP_POST_REVISIONS', 3);,只留最近 3 条
  • 延长自动保存间隔:加 define('AUTOSAVE_INTERVAL', 120);(单位秒),别设成 0
  • 禁用某类文章修订:用 remove_action('pre_post_update', 'wp_save_post_revision'); 钩子,但仅对特定 post_type 有效,且得写在插件或主题 functions.php 里

这些配置只影响后续新增,已有的 revision 还得手动清。

wp_posts 胖了不等于网站慢,但胖得离谱时索引会失效

wp_posts 表超过 5 万行后,如果 post_status 和 post_type 没复合索引,后台文章列表页 WP_Query 查 publish 状态就会扫全表——页面加载从 200ms 涨到 3s 很常见。

检查索引是否健康:

  • 运行 SHOW INDEX FROM wp_posts WHERE Key_name IN ('type_status_date', 'post_status');
  • 如果没有覆盖 post_type+post_status 的索引,手动建一个:ALTER TABLE wp_posts ADD INDEX type_status (post_type, post_status);
  • 这个索引对后台列表、REST API 查询、get_posts() 都有明显加速效果

清理完数据再加索引,比边删边建快得多;但加完别忘 ANALYZE TABLE wp_posts; 更新统计信息。

revision 和 auto-draft 本身不难删,难的是删完发现后台列表还是卡——这时候八成是索引没跟上,或者某个插件在 wp_posts 里塞了自定义 post_type 却没清理逻辑。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2213

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1359

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

795

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3032

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

5108

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1139

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5371

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4722

2023.08.14

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

0

2026.10.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何在 Windows 11 上安装 XAMPP
如何在 Windows 11 上安装 XAMPP

共1课时 | 216人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 11.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn