半夏凉歌   还在忙吗,别忘了给自己一个微笑。   2023-03-28

WordPress的版本修订历史(revision)、自动保存(autosave)和自动草稿(auto-draft)功能会非常讨厌的增加文章ID的数字,会造成连续的两篇文章,ID数值可能会相差很多,让我们这些希望文章ID连续的人感到非常不舒服。本文将介绍如何禁止版本修订历史、自动保存和自动草稿的问题。

版本修订历史(revision)在编辑文章时,如果文章标题、内容或者摘要等字段发生变化,WordPress就会将当前版本保存为一个修订版,方便你想退回到之前的版本,这有点像svn的工作方式。随之而来的问题是,数据库会被修订版撑的很大,加之有自动保存的功能,让这个修订功能多少显得有点累赘。
我们可以控制修订版的数量,例如一篇文章最多保存3个修订版
define(‘WP_POST_REVISIONS’, 3);
这样,每创建一篇文章,数据库中会有1条auto-save+最多3条revision。

自动保存(autosave)这是一个非常实用的功能,当你编辑文章的时候,WordPress每隔60秒自动保存你输入的内容,防止因为电脑挂机或者断电而丢失辛苦劳动的成果。这个功能不同于自动修订,你完全不用担心它会让你的数据库数据膨胀,因为它只会创建一条记录,每隔60秒更新一次,当文章发布后,这条记录的post_status会从draft变成publish,没有一点浪费的地方。
唯一给你带来麻烦的可能是保存间隔太短,服务器难受,写文章可能有间歇性卡的感觉,那么你可以将时间设置的长一点。
define(‘AUTOSAVE_INTERVAL’, 120 ); // 设置自动保存间隔,单位是秒,默认60

禁用后的副作用:预览功能不可用,必须保存为草稿才能预览

禁用版本修订和自动保存方法:找到wp-includes/defaut-contants.php文件,修改如下代码:

1
2
3
4
5
6
7
8
9
10
11
// 修改前
if ( !defined( ‘AUTOSAVE_INTERVAL’ ) )
  define( ‘AUTOSAVE_INTERVAL’, 60 );
if ( !defined(‘WP_POST_REVISIONS’) )
  define(‘WP_POST_REVISIONS’, true );
// 修改后
if ( !defined( ‘AUTOSAVE_INTERVAL’ ) )
  define( ‘AUTOSAVE_INTERVAL’, false );
if ( !defined(‘WP_POST_REVISIONS’) )
  define(‘WP_POST_REVISIONS’, false );

其中autosave的60为自动保存时间间隔,单位为s,可以修改为更大的数值或修改为false禁用。

自动保存功能,个人觉得还是蛮有用,所以保留着更改了自动保存时间,就禁用了版本修订

但是,这样并没有完全禁用掉自动保存。还需要修改wp-admin/post-new.php和wp-admin/post.php这两个文件。将这两个文件中的wp_enqueue_script( 'autosave' );注释掉,其中post.php还要把前面一行的if语句注释掉。

关于自动草稿 (不推荐禁用自动草稿,对使用也影响不大)

自动保存产生的记录叫做草稿,还有一种记录叫做自动草稿,自动草稿在你点击写文章时就会自动创建。

自动草稿记录会被转换成草稿或者文章,从而不产生垃圾数据。

对于产生的垃圾数据可以使用插件完成 WordPress 数据库清理优化插件:WP Clean Up