TypeCodes

取消WordPress的日志自动保存、修订版本、历史版本和文章不连续

首先声明,这篇文章来源于我大百度,博主只是整理了一下,另外测试了一些bug,所以不负也付不起版权责任^^。开个玩笑,相信很多Wordpress用户在后台写文章的时候都会被文本框下面的自动保存当前文章为草稿的提示所困扰。另外,文章不多,但是文章链接地址中的ID却真的是“围起来可以绕地球一圈”了。再者,臃肿的数据库、后台修改文章的时候会让你从好几个历史版本中选择一个,等等这些真的很让人蛋疼。好吧,不罗嗦了,相信看这篇文章的都懂的,直接来过程。

1 配置wp-config.php

打开Wordpress根目录下面的wp-config.php文件,在代码中添加下面代码:

//取消Wordpress自动修订
define('WP_POST_REVISIONS',false);
//取消Wordpress自动保存
define('AUTOSAVE_INTERVAL', false);
2 修改post.php和post-new.php文件

打开wp-admin目录下的post.php和post-new.php,然后注释掉wp_enqueue_script( 'autosave' );

//wp_enqueue_script( 'autosave' );在post-new.php的第49行
//if ( 'attachment' !== $post_type )在post.php的第173行
//wp_enqueue_script('autosave');在post.php的第174行
//网上写的只注释掉174行而不注释掉173行就会造成文章发布时的Bug,楼主亲测,版本是3.5.1!!!
3 修改default-filters.php

打开wp-includes目录下的default-filters.php,注释掉第252行:

//add_action( 'pre_post_update', 'wp_save_post_revision');
4 【选做】来源于天朝外的代码

测试的Wp版本是3.3.2,改代码声称支持所有3.0+的版本。做法如下:在主题中的 functions.php 文件加入如下代码。

remove_action('pre_post_update', 'wp_save_post_revision');
add_action('wp_print_scripts', 'disable_autosave');
function disable_autosave() {
    wp_deregister_script('autosave'); 
}

但是这个方法会产生一个小小的不便——后台编辑文章或者附件时,预览功能是不能用的,必须保存为草稿才能预览 。不过我经常都是用“文本”模式编辑,基本没用预览。

5 后记+文章不连续的问题

其实前面三个步骤完成再在后台装个“WP Cleaner”插件(用于删除已经存在的历史版本)就已经比较完美的解决WordPress的日志自动保存、修订版本和历史版本的问题了。另外,网上有用delete-revision插件的,经博主测试效果还是不如WP Cleaner。至于如果不想用插件删除历史版本的话,可以看看这篇文章 《PHP程序解决WordPress重新排列不连续的文章ID》 。这个既可以删除历史版本,还可以解决文章ID不连续的问题,并且效果要比网络上的类似于以下的“粗暴”删除代码好,能做到安全不会误删wordpress有用的信息。

DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision';
打赏支持

Comments »