WordPress有个自动保存与文章修订记录的功能。在编辑文章时,默认情况下 WordPress 每隔 60 秒会将你所编辑的文章自动保存一下,这样无论是你的浏览器崩溃亦或是电脑故障关机等其他情况都不用担心编辑的文章内容丢失。对于文章修订记录功能的话,WordPress 会保存你每次修订的记录在数据库中,当然一般情况下,你也可以在文章编辑页面看到如下所示的修订记录:
由于文章修订与自动保存的干预,往往会使得文章的id越来越大,就目前截止我发布这篇文章为止文章 ID 已经达到了 3314 了,而我实际发布的文章也才200多篇;而且过多的文章修订记录对于数据库的优化来说似乎也不是一件好事,所以说最终决定禁用文章修订与自动保存功能,虽然并不能彻底解决问题,但多少会有所缓解。网上关于禁用文章修订与自动保存功能的实现方式很多,但真说起来也是大同小异,我自己查阅了些 WordPress 的官方文档并结合网上自认为不错的代码整理了一下,大致如下:
方法一 修改 WordPress 配置文件 wp-config.php
将以下代码添加到程序的 wp-config.php 文件中即可:
/** 禁用文章修订功能 */ define('WP_POST_REVISIONS', false); /** 禁用自动保存功能 */ define('AUTOSAVE_INTERVAL', false);
通过上述代码我们直接将文章修改与自动保存功能禁用掉了,对于一些其他朋友可能仍希望保留最近几个版本的修订记录以免由于误操作导致文章不可恢复,这样的话我们直接将 false 修改为具体的正整数即可,比如下面这样:
/** 保留最新 5 次的修订记录 */ define('WP_POST_REVISIONS', 5); /** 每隔 360s 自动保存一次 */ define('AUTOSAVE_INTERVAL', 360);
方法二 修改自用主题下函数文件 functions.php
一般情况下我们直接修改 wp-config.php 即可实现禁用文章修订与自动保存功能了,但是对于一些主题中如果希望增加一个自定义启用或禁用文章修订选项的话,我们可以尝试修改主题的 functions.php 文件并在主题选项里配置上对应的选项。关于如何在主题的 functions.php 文件中增加此功能,可以参考如下代码:
/** 禁用自动保存 */ add_action('wp_print_scripts', 'qgg_not_autosave'); function qgg_not_autosave() { wp_deregister_script('autosave'); } /** 禁用文章修订 */ add_filter( 'wp_revisions_to_keep', 'qgg_wp_revisions_to_keep', 10, 2 ); function qgg_wp_revisions_to_keep( $num, $post ) { return 0; }
同样的,如果你想设置文章修订版本的保留数,可以使用如下代码:
//设置指定文章类型( my_custom_post )保留最近 5 次的修订版本 add_filter( 'wp_revisions_to_keep', 'qgg_wp_revisions_to_keep', 10, 2 ); function qgg_wp_revisions_to_keep( $num, $post ) { if ( 'my_custom_post' == $post->post_type ) { $num = 5; } return $num; }
关于该函数的相关文件,大家可以简单查看下程序 wp-includes 文件夹下的 revision.php 文件以及 wp-includes/js 文件夹下的 autosave.js 文件。