作为一个有ID洁癖的人,使用WordPress必定会安装Disable Revisions and Autosave这个插件,因为连续的ID号可以使文章编号看起来更美观,更重要的是可以减少数据库中垃圾数据的存在。
在我使用Z-blog的时候就考虑过是否要转换到WordPress,因为这样可以顺应众多站长的潮流。但是WordPress一直有这个问题,所以没换。在得知了某些插件可以解决这些问题后,我就硬着头皮换到了WordPress。还好,2.9.X版一直用着比较顺手了。可是在3.0推出后,就一直想更新,毕竟自己开发过程序,知道升级的好处,而且貌似还有升级瘾,呵呵。一直忍耐到了官方的3.0.1中文版出来后,就正式升级了。
可惜,在月光博客上看到一篇文章后,又开始对3.0头大了。怎么又冒出个自动草稿(auto-draft)功能。这个既不是以前的Revisions也不是Autosave,而是auto-draft。当然,如果你点击新建一篇文章,然后接着就写完发表,那么这个问题可能不存在,但是如果你点击了新建文章后,没写东西,或者写了几个字又点击其他页面,不想写了,那么你在数据库中查看,将占用一条记录,被标记为了auto-draft,即自动草稿。
自动保存固然好,可以防止在编辑过程中数据丢失,但是这个几率很小,有时候几乎用不到,所以,节省数据库空间比这个还重要,我们又考虑将该功能关闭。
解决方案
很遗憾,在3.0才发布了这段时间里,没有插件可以解决这个问题(或许是没有找到),那么还得手工来解决了,即修改代码。同样月光博客上那篇文章也提供了相关解决方案。经过我搜索,月光的这个方法是比较简单的一种,其他方法是修改代码逻辑,即没有关闭这个功能,但是让下一次新建文章时候来使用这个在数据库中空闲的记录,这样就不会浪费了。但是我们仍然讲解月光的这个简单方法,我试验过也成功了。月光的方法修改代码量小,出错几率小。修改代码逻辑修改比较多,容易出错。
找到wp-admin\includes\post.php文件,其中从374行开始(3.1版此方法失效,请勿使用)的如下的代码即是产生auto-draft的代码:
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 ); } else { $post->ID = 0; $post->post_author = ''; $post->post_date = ''; $post->post_date_gmt = ''; $post->post_password = ''; $post->post_type = $post_type; $post->post_status = 'draft'; $post->to_ping = ''; $post->pinged = ''; $post->comment_status = get_option( 'default_comment_status' ); $post->ping_status = get_option( 'default_ping_status' ); $post->post_pingback = get_option( 'default_pingback_flag' ); $post->post_category = get_option( 'default_category' ); $post->page_template = 'default'; $post->post_parent = 0; $post->menu_order = 0; }
解决方法很简单,在这段代码前面,即if ( $create_in_db ) {前面加上这句代码就可以了:
$create_in_db = false;
将修改好的这个文件上传到空间覆盖源文件,继续享用WordPress吧!
发布于 2011-03-05 07:05:27 回复该评论
发布于 2011-03-05 19:17:21 回复该评论
发布于 2011-03-05 19:50:09 回复该评论
发布于 2011-03-05 22:42:54 回复该评论
发布于 2011-03-07 19:03:55 回复该评论
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。