禁用 WordPress 文章修订功能

使用 WordPress 的朋友对文章修订功能都不陌生,文章修订可以自动保存正在编辑中的文章,随着编辑次数的增多会自动创建N个版本。个人感觉这种功能对于单一作者的网站基本没有什么作用,如果你的网站是多人协作发布文章的,倒是可以利用文章修订功能对比不同作者的修改版本。随着发布文章的增多,这些自动保存的文章会占用不小的数据空间,本文说下如何禁用 WordPress 文章修订功能

我的思路是这样的,考虑到写文章时可能会遇到掉线或者发错等事件,保留 WordPress 的自动保存功能,然后把文章修订这个功能禁止了。方法如下:

1.首先打开 wp-includes/default-filters.php 文件,找到如下代码(大约在198行):

add_action( 'pre_post_update', 'wp_save_post_revision' );

其中“wp_save_post_revision ”函数就是用于创建修订版本的,把这一行注释掉以后就不会在编辑文章的时候自动生成修订版本了。

2.还有种情况就是你可能会去编辑以前发布的文章,这样它默认还会自动保存修订版本,禁用它只需要找到 wp-admin/includes/post.php 文件中的(大概在1088行):

return _wp_put_post_revision( $_POST, true );

修改为:

return edit_post();

通过修改这两个文件,我们就可以做到禁用 WordPress 文章修订功能,且保留了自动保存功能。有一点不太方便的就是,在升级你的 WordPress 的时候还需要重新修改一下这两个文件。

最后,说下如何删除 WordPress 已有的文章修订记录,也就是清除以前所保存的所有修订版本。

登陆 phpMyAdmin,选择相应的数据库,执行以下SQL语句即可:

DELETE FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type = 'revision');
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type='revision');
DELETE FROM wp_posts WHERE post_type='revision';

禁用 WordPress 文章修订功能》上有16条评论

  1. 园子 文章作者

    @LIVE
    我写的应该算清楚了吧?
    呵呵
    需要注释掉整行:add_action( ‘pre_post_update’, ‘wp_save_post_revision’ );
    另外
    用 return edit_post(); 替换掉原来的 return _wp_put_post_revision( $_POST, true );
    这样修改就OK了~

  2. LIVE

    add_action( ‘pre_post_update’, ‘wp_save_post_revision’ );注释掉的意思是不是把这一行全部删了?
    还是只删除“wp_save_post_revision ”这一段???

  3. 歪豆

    @园子
    呵呵,Yo2服务器在电信,家里没电脑,用手机写的一篇,很多功能不能用,也不太会用,郁闷,从监狱到自由的天空就是这么不习惯
    俺在你博客留的言都成了歪豆的雅虎反链,看来要多抢抢沙发了^^

发表评论