WordPress 文章修订历史清理插件

WordPress 中编辑文章之后会留下很多修订版本。在文章发布之后,这些修订版本可能就没什么用了,如果不清除掉,会占用很多数据库空间。有一些插件可以帮忙完成修订版本的清理工作。

下面提到了三个可以清除文章修订版本(revision)的插件:Delete-RevisionOptimize Database after Deleting Revisions 和 Revision Control

经过测试,我觉得 Optimize Database after Deleting Revisions 比较好。或者 Delete-Revision 也非常好,也是我一直在用的,但是很久没更新了,建议简单修正其源代码。这三个插件都能很好的工作于 WordPress 多站点(MultiSite)模式。

****************** 华丽的废话分割线 ******************

1. Delete-Revision

我之前一直用的是 Delete-Revision,很简单(功能单一),也很有效,而且目前也还能很好的工作。但是它只能一次清除所有修订草稿。(这样应该很好吧?)

但是这个插件最后更新于2009年6月30号。后来 WordPress 中有个函数修改了,它也没有更新。前些天测试插件的时候开启了 WordPress 显示警告和错误信息的功能(将 define('WP_DEBUG', true); 放到 wp-config.php 文件(位于 WordPress 安装文件夹根目录)的结尾即可),发现了这一问题:

Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in ......\wp-includes\functions.php on line 2998

如果是中文的话,会显示:

Notice: 自 2.0 版本起,已不建议给 has_cap 传入一个参数!插件和主题中,用户等级的使用已不被支持。请换用角色和权限。 in ....../wp-includes/functions.php on line 2998

如果希望继续使用 Delete-Revision,建议自行修正该插件的上面的 has_cap 参数的问题。方法(详细信息请参考“关于 WP 中提示 has_cap 的问题”一文)如下:

将该插件源文件(delete-revision.php )中第 40 行的代码,

add_options_page('Delete-Revision', 'Delete-Revision',8, basename(__FILE__), 'my_options_delete_revision');

中的 8 改为 'manage_options' 。注意,单引号是必须的。即,

add_options_page('Delete-Revision', 'Delete-Revision', 'manage_options', basename(__FILE__), 'my_options_delete_revision');

另外,即使不修改源代码也是可以正常工作的。只不过有开头所描述的问题而已。

2. Optimize Database after Deleting Revisions

Optimize Database after Deleting Revisions 也是非常简单的一个插件,除了可以设定要保留的最新修订版本数量(所有文章都使用这一设定)之外,还可以同时对垃圾箱里的内容和垃圾评论进行清理,还可以清理一些残留的孤立的文章 Meta 元数据。

这个插件的文件夹名字是 rvg-optimize-database。安装并启用后,在 WP 仪表盘的“设置”菜单项下有“Optimize DB Options”,这是它设置页面;在“工具”菜单项下有“Optimize Database”,这是它的操作页面。

在“Optimize DB Options”选项页面:

  • Maximum number of – most recent – revisions to keep per post 表示设定要保留的每篇文章的最大的修订草稿数量。默认为 0,即不保留。
  • Delete all trashed items 表示同时删除所有在“回收站”中的内容。默认未选中。
  • Delete all spammed items 表示同时删除所有垃圾评论。默认未选中。
  • Delete unused tags 表示同时删除所有未使用的标签。默认未选中。
  • Keep a log 表示对所有执行的操作保存一份日志。默认未选中。这个没必要吧?
  • Scheduler 表示设置定期执行所有任务。默认未选中。这个也没必要吧?

  • Show ‘1-click’ link in Admin Bar 表示在 WordPress 后台顶部的导航条中放置一个“一键执行 Optimize DB”任务的快捷菜单。默认未选中。建议选中。这个挺好的,以后发布文章后,觉得修订版本没什么用了,就顺手一点击即可完成上面选项中设定的所有操作。
  • 剩下的部分建议不要随便设置。

当然,设定好选项后别忘记点击页面底部的 Save Options 按钮保存设置。

在“Optimize Database”页面,单击“Start Optimization”按钮就可按照上面的选项设置执行清理工作。当然,最简单的还是直接单击 WordPress 后台顶部的导航条中的“Optimize DB ( 1 click)”吧。

虽然清理数据库的功能对我来说挺鸡肋的,我都是在 phpMyAdmin 中整理数据库,但是这个插件确实挺不错。

3. Revision Control

Revision Control 貌似是设置好了之后会自动清理修订版本的一个插件。

安装并启用后,在 WordPress 仪表盘的“设置”菜单项下有个“Revision”就是它的设置页面了。可以针对不同文章类型(文章 post、页面 page,甚至如果你使用了表格插件 TablePress,其修订版本 TabePress Tables 也可以被自动清理)设定要保留的修订草稿数量。估计超过这个数量的修订版本会被自动清理。

但是这样的设定有个小问题:如果设定为 0,即不保存任何修订草稿,那是不是完全就不能用修订功能了呢?如果保存少量修订版本,比如 5 个,那么这些修订版本是不是就一直存在了呢,即使这文章已经发布可能再也不会修改了?

另外,这个插件启用后,WordPress 也会有个警告信息,虽然看情况不怎么严重:

Strict Standards: Non-static method Plugin_Revision_Control_Compat::options() should not be called statically, assuming $this from incompatible context in ....../wp-content/plugins/revision-control/revision-control.php on line 252

所以这个插件我就不打算用了,有兴趣的自己去测试吧。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/wordpress-revisions-clean-plugin/>。转载请保留此信息及相应链接。

14 条关于 “WordPress 文章修订历史清理插件” 的评论

    • 这个功能其实挺好的,对于突然崩溃的浏览器或者电脑有非常好的疗效。虽然我很少遇到电脑宕机或者浏览器崩溃,可是偶尔遇到一次真是倍感庆幸啊。

  1. 编辑用全屏模式,保存可以不刷新,随时保存下,再意外最多损失刚打的几行字。

    • 好像从wp 3.6开始是有这么个功能了,据说是保存在本地浏览器缓存中,不过一直没有实验过。谢谢提醒 :)

    • 你是说修正 delete revision 那个插件?
      估计你都是直接从WP后台安装插件吧?用ftp软件连接到服务器,将描述的那个文件下载下来,用文本编辑器(如 notepad++)对照编辑,然后再上传回去就行了。

  2. 引用通告: WordPress 文章修订版本清理插件Delete-Revision | CY's

  3. 引用通告: 关于 WP 中提示 has_cap 的问题 | 水景一页

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)