wordpress禁用自动保存草稿和修订版本,让文章ID连续

2016年4月1日 建站技术 浏览 4,802 抢沙发 A+

WordPress的使用者可以发现,最大的文章ID要远大于文章总量,对于某些强迫症患者,这绝对是无法忍受的。造成ID不连续的主要原因是:①文章自动保存;②文章的修订版本;③附件占用ID;⑤导航菜单和单页面占用ID。所以为了确保ID尽可能的连续,我们需要禁用自动保存和修订版本的功能,尽量保证文章ID的连续。

对于禁用wordpress自动保存和修订版本的方法网上有很多,但是大多都是很久以前的了,经过测试对于最新版本的wordpress-4.4.2已经失效了。现在本站分享两个wordpress最新禁用自动保存草稿和修订版本的方法。

曾劲松博客已升级到最新WordPress 4.4.2版本,根据本站测试,以下的方法可以有效的支持wordpress4.4.2最新版本禁用自动保存和去除文章修订。

为了不浪费你的时间,继续看下文之前请确认你的wordpress版本为4.1.1以上。下面的方法需要修改源文件所以在打开每一个文件之前,记得一定要先做好备份!

禁用文章修订历史版本

打开 wp-config.php 文件,在

$table_prefix = ‘wp_’;

前面添加下面的两行代码:

define('WP_POST_REVISIONS', false);//禁用历史修订版本
define('AUTOSAVE_INTERVAL', false);//自动保存时间设置为一天

禁用wordpress修订版本

禁用自动保存功能

打开 wp-admin/post.php 文件,搜索

if ( 'attachment' !== $post_type )

找到

if ( 'attachment' !== $post_type )
wp_enqueue_script(‘autosave’);

将这两行用注释符号//注释即可!如下:

wordpress禁用自动保存

继续打开wp-admin/post-new.php文件,搜索:

wp_enqueue_script( ‘autosave’ );

将这一句注释掉,直接删除也可以!

wp自动保存禁用方法

禁用自动草稿功能

打开 wp-admin\includes\post.php 文件,搜索:

if ( $create_in_db ) {

找到:

$post_id = wp_insert_post( array( ‘post_title’ => __( ‘Auto Draft’ ), ‘post_type’ => $post_type, ‘post_status’ => ‘auto-draft’ ) );
$post = get_post( $post_id );

替换为:

/* 修改-注释两行代码禁用草稿*/
/*
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$post = get_post( $post_id );
*/
/* 修改开始*/
global $current_user,$wpdb;
$post = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_type = '$post_type' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" );
if (!($post) ) {
 $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
 $post = get_post( $post_id );
}
/* 修改结束 */

如下图:

禁用wordpress自动草稿功能

主题Functions.Php修改方法

在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版本)。

除此之外,wordpress上传图片等多媒体文件时,也会占用ID,对于这个问题,我本人是丢弃wordpress自带的编辑器,用了一个编辑器插件:百度Ueditor编辑器插件 For WordPress,这个编辑器上传附近是直接插入文章中的,不经过多媒体,不占用文章ID,而且功能比wordpress自带的编辑器强大多了,有兴趣的可以试一下。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: