文章修订版就是你每次修改一次文章,它都会自动帮你保存修改之前的文章版本,专业术语叫做版本控制,这样保证了在误修改的情况下可以还原之前的内容,这种功能对中小型网站其实并没有太大的意义,而且会在数据库产生很多无用的数据,使你的数据库越来越臃肿,拖慢网站速度。
关闭WordPress网站修订版本和自动保存功能不仅能优化数据库,还是解决文章ID不连续问题的核心,详情请移步:WordPress文章ID不连续问题的完美解决方法
要想关闭WordPress修订版本和自动保存功能,首先我们要知道控制他们的代码在哪里,控制他们的代码是什么。只有精准的定位到问题的所在,才能根据所需进行修改。在网上看到了很多都是用代码修改的,但是经过测试,很多代码在新版本的WP中似乎是无效的。基本都是版本太旧了,今天西安SEO顾问明月为你提供最新的控制代码关闭方法。
第一种方法:修改WordPress程序根目录下wp-config.php文件
1.控制修订版本
1.// 不保存任何版本(除了自动保存的版本)
define('WP_POST_REVISIONS', false);
2.//保存所有修订版本
define('WP_POST_REVISIONS', true);
3.// 保存 n 个修订版本
define('WP_POST_REVISIONS', n);
2.控制自动保存
1.//禁用自动保存
define(‘AUTOSAVE_INTERVAL’, false);
2.//自动保存10小时一次
define('AUTOSAVE_INTERVAL', 36000);
3.//设置自动保存间隔/秒
define(‘AUTOSAVE_INTERVAL’, 120);
研究透了控制代码,那么具体的解决方案也就出来了,根据需要选择控制代码即可。关闭修订版本和自动保存,明月SEO只用了两句代码,代码如下:
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', 36000);
为什么选择10小时自动保存一次而不是直接false?
(1)因为明月SEO在测试的时候发现直接 false 禁用无效,所以后来索性将自动保存的时间间隔设置成了36000,这样无论你编辑多长时间都不会产生ID了。
(2)因为修改成false以后会造成WordPress报错的一个bug,开启debug可以在编辑文章时看到提醒。编辑一篇文章一般都不会超过10小时,所以效果是一样的,杠杠滴。
上面两句代码的位置?其实将其放在其它define代码旁边均可。明月SEO将其放在:define('WP_DEBUG', false);这句代码后面,具体位置如图所示:
第二种方法:修改主题文件夹下的functions.php文件
1.禁用WordPress自动保存
//禁用自动保存(方法一)
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_action('wp_print_scripts','disable_autosave'); function disable_autosave(){ wp_deregister_script('autosave'); }
2.禁用WordPress修订版本
(1)//禁用所有文章类型的修订版本
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', 'specs_wp_revisions_to_keep', 10, 2 ); function specs_wp_revisions_to_keep( $num, $post ) { return 0; }
(2)//只禁用某种文章类型的修订版本
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; }
老版本代码如下:(仅供参考对比,不建议用)
add_filter( 'wp_revisions_to_keep', 'specs_wp_revisions_to_keep', 10, 2 ); function specs_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’)
研究透了以上代码,就可以根据自己的需要来控制其功能了。明月SEO,为了关闭修订版本和自动保存功能在functions.php文件里也是只用了两句代码解决了问题,两句代码如下:
add_action( 'admin_print_scripts', create_function( '$a', "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;}
代码位置?代码放在了functions.php文件的末尾的标签“?>”之前,如下图所示:
以上两套方法,明月SEO均采用最新最简约的控制代码,进行修改,最终成功的关闭了修订版本和自动保存的功能。
具体这些其他的代码是否可行,测试时不可行,但是,明月最后一次测试代码,重启了服务器空间。则代码有效。所以解决这个问题,可能还需要重启下服务器,或者换个浏览器,从新登录后台编辑文章。而不是上传修改代码文件后就开始编辑文章测试。毕竟有的代码命令行可能与服务器反应,缓存等也有关系。
另外还有一说是修改后台 wp-admin根目录下的 post.php文件, 删除掉保存成草稿的代码和 post-new.php 文件中,注释掉:wp_enqueue_script(‘autosave’); 代码即可。如果不注释和删除还是会产生ID号的。详情请移步:https://www.shendukeji.com/697.html 文章有对这两个文件的修改的详细的说明。
至此,相信一定能解决了你的问题。
【其它不能用代码说明】
本文由明月SEO编辑,边用边实地测试,也测试了很多其他的不完善不能用的代码如下:
(1)在functions.php的最后php结束标记前加上如下代码:
//移除自动保存 wp_deregister_script('autosave');
//移除修订版本 remove_action('post_updated','wp_save_post_revision' );
明月点评:这里移除修订版本的方法不同于网上早期的方法的地方是,'wp_save_post_revision' 挂载的钩子已经由‘pre_post_updated’变成了‘post_updated’,这个变化貌似是WordPress版本4.0之后,造成了早期的修改方法失效了,具体见WordPress原文件wp-includes/default-filters.php第265行(WordPress4.2.2版本)
(2)编辑functions.php文件 在文件中 ?> 的前面加上代码:
remove_action ( 'pre_post_update', 'wp_save_post_revision' );
(代码注释:移除修订版本记录功能)
明月点评:这个方法只关闭了修订版本,那么自动保存呢?明显不完善
关注我们:请关注一下我们的微信公众号:扫描二维码 号名称暂无
版权声明:本文为原创文章,版权归 明月SEO 所有,欢迎分享本文,转载请保留出处!