虽说WordPress 3.1.3已经去除了“修订版本”功能,每次点击“添加新文章”或“添加新页面”都会生成一个“自动草稿”,占用一个ID。
如果你没有输入任何内容就关闭的话,这个草稿在WP后台是看不到的。
要想使用这个ID,就要去操作数据库,这比较麻烦,而且容易出错。
那有没有简单一点的方法呢?
哈哈,当然有了。
由于WordPress 3.1.3已经去除了“修订版本”功能,所以,现在想要实现文章ID连续也就容易了许多。
具体方法如下:
在wp-admin/includes/post.php中,查找“create_in_db”,找到如下代码:

	if ( $create_in_db ) {
		// Cleanup old auto-drafts more than 7 days old
		$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
		foreach ( (array) $old_posts as $delete )
			wp_delete_post( $delete, true ); // Force delete
		$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' ) );
	} else {

将其修改为:

if ( $create_in_db ) {
        global $current_user;
        $post_auto_draft = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" );
        if ($post_auto_draft){
            $post = $post_auto_draft;
        } else {
            $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
            $post = get_post( $post_id );
        }
} else {

代码来自:akii

修改后当数据库中有一条或多条状态为”auto-draft”的自动草稿时,点击“添加新文章”会自动调用最小的ID。只有当数据库没有这种类型(auto-draft)的数据,才会新插入一条数据。
这样可以避免生成的“自动草稿”所占的ID没有使用而破坏ID的连续性,还可以减少直接操作数据库所带来的不必要的麻烦。
而且这样修改,在后台写文章的时候可以自动保存文章,不会生成新ID。
我博客的目前没有浪费任何一个ID,你可以在查看。
方法:
在地址栏输入:timeting.com/*(把*换成1~9任意一个数字,因为目前只用了9个ID。)
注意:

*.直接从后台上传媒体文件(图片和各种附件)会占用一个ID,建议用FTP上传或者使用外链。

*.还有,使用主题的“自定义菜单”,每添加一个菜单到导航都会占用一个ID,不建议使用。
hoho~这个方法完美吧?还不赶快试试……