Saber 酱的抱枕

Fly me to the moon

08/4
2014
学习

重新利用wordpress空下来的ID

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

重新利用wordpress空下来的ID