WordPress禁用文章历史修订版本、自动保存的四种方法(亲测有效)
在WordPress后台编辑或修改文章时,经常会自动保存多个修订版本,每个修订版本都会记录在数据库中。
这样做的好处是,当你写文章时,如果忘记按下Ctrl+S保存,系统会定时自动保存,以防止意外关闭编辑器导致内容丢失。
但是,这样做的缺点是会导致数据库中堆积大量无用的数据,使数据库越来越臃肿,从而拖慢网站的速度。对于中小型网站来说,这种功能实际上并没有太大意义,通常我们并不需要这种人性化的功能。
方法一、通过修改 WordPress 程序根目录下wp-config.php配置文件实现功能禁用
打开根目录下的 wp-config.php 文件,在 “define(‘WP_DEBUG’, false);” 后边添加下面的两行代码:
/** WordPress 编辑器关闭自动保存和历史修订版本选项。 本项注释掉即可开启。 */ define('WP_POST_REVISIONS', false);//禁用历史修订版本post_revision define('AUTOSAVE_INTERVAL', 86400);//设置自动保存时间设置为一天
制修订版本和自动保存的设置
// 不保存任何版本(除了自动保存的版本) define('WP_POST_REVISIONS', false); //保存所有修订版本 define('WP_POST_REVISIONS', true); // 保存 n 个修订版本 define('WP_POST_REVISIONS', n); //禁用自动保存间隙时间 define(‘AUTOSAVE_INTERVAL’, false); //自动保存10小时一次 define('AUTOSAVE_INTERVAL', 36000); //设置自动保存间隔/秒 define(‘AUTOSAVE_INTERVAL’, 120);
为什么选择10小时自动保存一次而不是直接false?
(1)因为在测试的时候发现直接 false禁用无效,所以后来索性将自动保存的时间间隔设置成了36000,这样无论你编辑多长时间都不会产生ID了。
(2)因为修改成false以后会造成WordPress报错的一个bug,开启debug可以在编辑文章时看到提醒。编辑一篇文章一般都不会超过10小时,所以效果是一样的,杠杠滴。
方法二、找到 wp-includes/defaut-contants.php 文件,修改如下代码:
//禁用版本修订历史和自动保存 // 修改前 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 ); //禁用版本修订历史
以上二种方法并没有完全禁用掉自动保存 。因为在没有点击“更新”文章之前就离开编辑的页面时,会弹出“系统可能不会保存你所做的更改”的提示窗口。
所以还需要修改 wp-admin/post-new.php和wp-admin/post.php 这两个文件。
将这两个文件中的 wp_enqueue_script( ‘autosave’ ); 注释掉。
其中post.php还要把前面一行的if语句注释掉。
打开 wp-admin/post.php 文件,搜索并注释 //if ( 'attachment' !== $post_type ) // wp_enqueue_script('autosave'); 打开 wp-admin/post-new.php 文件,搜索并注释 //wp_enqueue_script( 'autosave' );
方法三、当前使用主题文件夹下的 functions.php 文件php结束标记 ?> 前加上如下代码
//禁用文章自动保存(方法一) add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) ); //禁用文章自动保存(方法二)。注:方法一与方法二任选其一 add_action('wp_print_scripts','fanly_no_autosave'); function fanly_no_autosave(){ wp_deregister_script('autosave'); } //禁用文章修订版本 add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 ); function fanly_wp_revisions_to_keep( $num, $post ) { return 0;}
另外你如果有自己定义的文章类型,可以使用下面这段代码来禁止特定文章类型的修订版本。
//只禁用某种文章类型的修订版本 add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 ); function fanly_wp_revisions_to_keep( $num, $post ) { if ( 'post_type' == $post->post_type ) { //post_type为你要禁止修订版本的文章类型 return 0; } return $num; }
下面是Wordpress中几种类型
文章(Post Type: ‘post’ )
页面(Post Type: ‘page’ )
附件媒体(Post Type: ‘attachment’ )
修订版本(Post Type: ‘revision’ )
导航菜单( Post Type: ‘nav_menu_item’ )
方法四、使用“ Super Switch ” 插件禁止修订版本和自动保存
1、在 “安装插件”页面的搜索框中,输入 Super Switch ——》 回车 ——》 找到 Super Switch ——》 点击“现在安装” ——》 启用“ Super Switch ” 插件。
博主使用的是第一个方法,Super Switch插件貌似不兼容wordpress6.X版本。请自行测试。