浅析wordpress文章的修订版(revisions)

  revision即修订版,在wordpress中每修改一次文章后都会保存一个修订版。像“关于”这个页面可能都会去反复修改,这样会自动保存很多个修订版,修订版和普通文章一样,存储在数据的wp_posts表中,编号也会自增,这也是导致发表后的文章编号不连续的原因。

  为何要有修订版?修订版的好处就在于你可以随时还原到未修改前的状态,但是意义又不是简单的还原。我们在日常处理文档的时候通常会有一个修订版本号,它可以随着项目版本递增,可以随着新的需求递增。它是对已经成形的内容进行重新修订,经过修订后的内容,称为修订版。wordpress中一篇文章可以被多个用户修改,保存各自的修订版,便于查阅。

  那么对于普通用户并不需要那么多修订版,即使要修改也是在当前发布的版本中修改,很少去翻阅历史修订版。那么如何去删除修订版或者是减少修订版将是本文章的重点。

1. 插件删除

  这种是最简单,安装delete-revision插件,这个很方便,具体参见链接的截图。

2. 数据库手动删除

  网上很多文章都是直接删除post_type为revision的文章,代码如下

DELETE FROM wp_posts WHERE post_type = "revision";

  这样确实是删除了修订版,但删的不够干净。具体可以看到这张图,这是wordpress 2.7+数据库关系图,可以在官网找到。
wordpress数据库关系图
  可以发现文章的id编号关联着文章的附加信息(wp_postmeta)和留言(wp_comments)以及分类(wp_term_relationships)。当然处于未发布状态的文章是不可能有留言的,所以wp_comments表可以不考虑。如果只删除wp_posts表中的东西,那么其余两个表中将还有残留的无用信息。因此应该这样删,代码如下

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";

  是不是觉得很麻烦,其实可以不去关注这些细节,现在的主机数据库一般都很大,完全够用。那又不想要这么多修订版怎么办呢?参见下面的方法。

3. 设置修订版数量

  wordpress中可以设置版本保存的数量,只是没在后台体现出来,需要修改wp-config.php文件。添加

define('WP_POST_REVISIONS', 3);

  这样就可以指定只保存三份修订版,旧的会自动替换。这里不推荐全部关闭,免得后悔都没机会。dorole就是这样设置的。

  参考文档:
  http://codex.wordpress.org/Database_Description
  http://codex.wordpress.org/Revision_Management

本文链接地址:https://dorole.com/186/

来自:Dorole's Blog

发布者

Steve

编程/摄影

《浅析wordpress文章的修订版(revisions)》上有3条评论

  1. 网站程序知识了解很少,最近用WP做了个个人站,这个问题发现有一段时间了,但是一直没在网上找解决办法,今天越想越感觉不爽,来找找方法。
    define('WP_POST_REVISIONS', false);
    昨天晚上在其它站找到这个方法,但是昨天修改了wp-config.php文件,可今天发文章,修改文章后还是有修订版,愁了。 :-x

回复 freetstar 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: