2010年9月15日星期三

Wordpress禁用自动保存、自动草稿和修订版本功能(ID连续)

我的博客文章的固定链接地址是采用文章ID作为Permalink的,昨天却发现相邻两篇文章的ID相差很远,有的离谱的差了几十个。

Google一下才知道,wordpress具有版本修订(Post Revisions)、自动草稿(Auto-Draft)和自动保存(Auto-Save)的功能。版本修订是如维基百科似的,使得修订的文章具有版本记录。自动保存的作用也是很显然的。可是,日志的版本修订功能Revision占用ID,同样地自动保存功能也占用ID,这样你为一篇文章编辑很多次或者写一篇很长的文章,在数据库中会保存多个不同ID的记录,最终发表的文章ID当然也就是不连续的了。

解决这个问题,我是用的方法是采用disable revisions and autosave插件。同时月光介绍了wordpress 3.0.1出现的新问题
只要新建一篇日志,即使不写内容,数据库中也会自动保存一篇草稿。

解决:编辑wp-admin/includes/post.php文件,找到以下两条语句:

$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$post = get_post( $post_id );

替换为以下代码:

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

对于日志ID已经出现混乱的问题,可以直接进入phpadmin中手动调整的。

对于梳理成连续的ID,继续发表新文章的时候,ID还是会从之前不连续的数字之后开始起跳的问题,解决方法是:
在phpmyadmin里的数据库执行一行SQL命令:

alter table wp_posts AUTO_INCREMENT=n

其中n为你想新开始的数字,比如把多余的修订删完之后,最后一篇ID为20,此时n为21。

没有评论:

发表评论