试了几个方法都不行,包括月光博客上的那一段,亲测在最新 WordPress 4.4 上是失效的。但是我真的是个ID控,看着混乱的文章ID绝对受不了,怎么办呢?下面的方法本人亲测可行,也是网上找的,主要是分为三步。

1、首先修改根目录下的 wp-config.php 文件,在 define(‘WP_DEBUG’, false); 后边添加如下代码:
/** 关闭修订历史和自动保存 **/

define( 'AUTOSAVE_INTERVAL', false );
define( 'WP_POST_REVISIONS', false );

2、修改 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 );
		if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
			set_post_format( $post, get_option( 'default_post_format' ) );

// 把它改成如下这一段

	if ( $create_in_db ) {
  global $wpdb;
  global $current_user;
  $post = $wpdb->get_row( "SELECT * FROM {$wpdb->posts} WHERE {$wpdb->posts}.post_status = 'auto-draft' AND {$wpdb->posts}.post_type = '$post_type' AND {$wpdb->posts}.post_author = {$current_user->ID} ORDER BY {$wpdb->posts}.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 );
  }
  if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
    set_post_format( $post, get_option( 'default_post_format' ) );

原理:如果获取到数据表中已存在自动草稿则继续使用这个自动草稿而不再添加自动草稿。

3、修改当前主题的 functions.php 文件,添加如下内容:

/** 移除自动保存和修订版本 **/

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