08/4
2014
wp文章ID不连续的原因是草稿、历史版本、上传到媒体库中的文件、自动保存都占用id,可查看
http://www.saber.love/678
所以用id做固定链接的时候会发现像我这样,162篇文章,id已经到了808.这实在是太痛苦了。针对这个问题,我禁用了历史版本功能(实在是用不到),但保留了自动保存和草稿的功能,可查看
http://www.saber.love/697
这篇文章里面附了清理之前历史版本的代码,一些已经使用过的id已经没有对象了。
我不强求id连续,但是眼看再发文章id就要四位数了,我不喜欢这样虚的长度。于是就想重新利用之前空下来的id,最后找到了教程,方法是修改\wp-admin\includes\post.php
搜索create_in_db这串字符,一共有两个结果,定位到第二个结果那里,选中如图的代码
替换为下面的代码
if ( $create_in_db ) { $post_auto_draft = $wpdb-> get_row( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_author = 1 LIMIT 1" ); $post_id=$post_auto_draft->ID; //通过SELECT读入数据库中存在的一条草稿的文章ID if(empty($post_id)){ //判断是否为空,为空表示没有草稿,插入新的一条ID $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft'), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) ); } $post = get_post( $post_id );
保存后覆盖源文件(当然建议先做备份)。
此时我来写这篇文章,发现分配的id是3,说明这是有效的
但是后来发现竟然只有两个空id被重新利用,两篇文章过后又到800多了,不明所以,不过这代码就留着吧。
另外,网上有的方法是将所有文章重新分配id,和我这个方法的区别是所有已经发布的文章id都会变,链接也变了,处理原来链接的话会是很麻烦的事情,我就没有这样做。
参考:http://jingyan.baidu.com/article/e3c78d64788e813c4d85f559.html