文章源自国外主机测评-https://www.zjcp.org/14490.html
WordPress有个文章自动保存和修订记录的功能。在编辑文章时,默认情况下 WordPress 每隔 60 秒会将你所编辑的文章自动保存一下,这样无论是你的浏览器崩溃亦或是电脑故障关机等其他情况都不用担心编辑的文章内容丢失。对于文章修订记录功能的话,WordPress 会保存你每次修订的记录在数据库中,当然一般情况下,你也可以在文章编辑页面看到如下所示的修订记录:文章源自国外主机测评-https://www.zjcp.org/14490.html
文章源自国外主机测评-https://www.zjcp.org/14490.html
由于文章修订与自动保存的干预,往往会使得文章的ID越来越大,就截止我发布这篇文章为止文章 ID 已经达到了 1009 了,而我实际发布的文章也才742篇;而且过多的文章修订记录对于数据库的优化来说似乎也不是一件好事,所以说最终决定禁用文章修订与自动保存功能,虽然并不能彻底解决问题,但多少会有所缓解。网上关于禁用文章修订与自动保存功能的实现方式很多,但真说起来也是大同小异,我自己查阅了些 WordPress 的官方文档并结合网上自认为不错的代码整理了一下,大致如下:文章源自国外主机测评-https://www.zjcp.org/14490.html
文章源自国外主机测评-https://www.zjcp.org/14490.html
方法一 修改 WordPress 配置文件 wp-config.php
找到站点根目录下面的 wp-config.php 文件,在“define(‘WP_DEBUG’, false);”后边添加如下代码即可:文章源自国外主机测评-https://www.zjcp.org/14490.html
文章源自国外主机测评-https://www.zjcp.org/14490.html
/** 禁用文章修订功能 */
define('WP_POST_REVISIONS', false);
/** 禁用自动保存功能 */
define('AUTOSAVE_INTERVAL', false);
文章源自国外主机测评-https://www.zjcp.org/14490.html
通过上述代码我们直接将文章修改与自动保存功能禁用掉了,对于一些其他朋友可能仍希望保留最近几个版本的修订记录以免由于误操作导致文章不可恢复,这样的话我们直接将 false 修改为具体的正整数即可,比如下面这样:文章源自国外主机测评-https://www.zjcp.org/14490.html
/** 保留最新 5 次的修订记录 */
define('WP_POST_REVISIONS', 5);
/** 每隔 360s 自动保存一次 */
define('AUTOSAVE_INTERVAL', 360);
文章源自国外主机测评-https://www.zjcp.org/14490.html
我自己使用的就是这种方法,具体代码如下:
//自动保存10小时一次
define('AUTOSAVE_INTERVAL', 36000);
//禁用修订版本
define('WP_POST_REVISIONS',false);
方法二 修改自用主题下函数文件 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 文件。
关于自动草稿
题外话就是,除了自动保存和修订版本,WordPress还有一个非常讨厌的功能就是自动草稿。其实在很长一段时间内,笔者分不清自动草稿和自动保存的区别,简单的讲自动保存是你在写文章的时候,系统会根据时间间隔自动对文章进行备份并写入数据库;而自动草稿是当你点击“写文章”那一刻起,一个新的数据已经写入数据库,不管你后面是否有录入内容,哪怕是你退出编辑器。
关于自动草稿功能的禁用,目前并没有简单有效的函数代码可用,如需禁用需要修改WordPress程序本身,这个略显麻烦,本文暂且不表。
效果图:
除了上述的这些可能造成文章ID不连续的功能外,WordPress还会在上传新的文件、添加导航菜单、添加页面等情况下占用ID,造成文章ID不连续。这种占用没有太好的方法进行解决。
总之,WordPress的结构设计造成了大家极其反感的文章ID不连续问题,WordPress却完全没有修改这种不合理设计的打算。却对于一些常用功能没有默认的支持,只能依靠插件或主题,实在有些古怪。