两种简单方法搞定快速删除wordpress文章的历史版本 附删除自动草稿数据的方法

WordPress有很多人性化的设计,比如自动打草稿、文章版本历史等。

这两个功能虽然不错,但是避免了停电或者断网的情况,写入的信息没有保存。即使写错了,有版本历史可以追溯也是极好的。

但是!时间长了,你会发现数据库会变得很大,尤其是wp-post表,大部分都是重复的。

比如我们站里就有一个页面专门做链接故障和链接修复。如果有新的链接,我会放到这篇文章里。结果,不知不觉中,这个页面已经累积了27个版本:

这27个版本分别存储在数据库中,等于这个页面,相当于正常的27个页面占用的空间。

为了节省数据库空间,提高博客网站速度,我们有必要删除这些历史修改和草稿!

怎么做?其实也很简单。这里有两种方法可以批量删除wordpress历史文章版本和数据库中自动保存的草稿。

方法1:使用Wordpress自带的代码。
WP提供了一种操作数据库的方法。只要我们把下面的代码复制到主题目录下的function.php,然后刷新下一篇文章,我们就会自动删除所有的修改文章和草稿文章。

代码是:

// 删除修订版本所对应的相关联数据和自动草稿中的冗余数据。post_status='auto-draft'对应的是自动草稿数据
$wpdb->query( "DELETE FROM $wpdb->posts WHERE post_status='auto-draft' or post_type = 'revision'" );
不建议将此代码长期放置在function.php中。定期清理的时候,放进去就好了。

你确定不需要自动保存吗?)

方法2:使用数据库SQL语句命令。
请记住在删除数据库之前对其进行备份!!!

首先,我们进入数据库管理界面。一般我们可以通过phpmyadmin登录,打开数据库管理系统。然后,我们可以找到wordpress数据库,点击SQL按钮,然后我们可以输入execute statement命令。

通过执行以下语句,我们可以快速找到文章的所有历史修订和草稿:

SELECT * FROM wp_posts WHERE post_type = 'revision' or post_status = 'auto-draft';
如图(界面可能有所不同):

图片-20220509160108608

可以看到已经找到了2495条记录!

其实我总共只有六千多的数据,差不多占了一半!

那我们就可以开始动刀了!

首先,执行下面的语句命令来删除历史文章的所有修订版本:

DELETE FROM wp_posts WHERE post_type = 'revision';

以下是删除所有自动草稿的方法:

DELETE FROM wp_posts WHERE post_status = 'auto-draft';

但是在这些历史文章的版本和草稿中,通常会有大量的相关数据,一般存在于post_postmeta中。我们也可以一起删除。只需执行以下sql命令:

/*下面一段可以同时完成上面两段的工作*/
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_status='auto-draft' or a.post_type = 'revision';

这样就清除了wordpress文章的历史版本

根据2013年1月30日《计算机软件保护条例》为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。鉴于此,本站希望大家严格按此说明研究软件,如需运营请购买正版!!!

资源下载地址

点击下载 会员下载