虽说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~这个方法完美吧?还不赶快试试……
我是没直接用到ID,所以对联系ID还是没什么要求的,就是数据库的数据多了一点.
@Cheney WP3.1.3不会生成垃圾数据了,不修改的话也不会多多少数据。
反正修改也简单,能不浪费就不浪费嘛。
谢谢博主分享收藏了,谢谢,