昨天將另外幾個WordPress博客從2.9.2升級到了3.0.1,沒想到發現了一些問題,以前已經很好解決的自動草稿存檔問題又出現了,折騰了半天才解決。
做為一個id控,我一直喜歡用數字id做為日誌文件名,而WordPress自從2.6版本之後就出現了幾個很令人討厭的功能:Post Revisions和Autosave,在默認的情況下,日誌的ID將不再連續,使用ID做為Permalink結構的用戶將會看到一個地址越來越混亂的WordPress,很煩,後來我通過一個插件很完美的解決了這個日誌ID不連續的問題,並一直用到了2.9.2都沒問題,升級到3.0.1之後,自動草稿又出來了,但是該插件依舊在工作,通過跟踪發現,只要新建一篇日誌,即使不寫內容,數據庫中也會自動保存一篇草稿,這是以前版本的WordPress所沒有的現象,也是disable revisions and autosave插件失效的原因。
既然已經升級到了WordPress 3.0.1,也不好降級,只好再想辦法解決Wordpress自動保存草稿的問題,經過搜索,找到了一個不是很好的禁用自動保存草稿的方法。
解決WorPress 3.0.1自動草稿的方法是:依舊啟用原先的disable revisions and autosave插件,然後編輯wp-admin/includes/post.php文件,在if ( $create_in_db ) {語句之前加入一行$create_in_db = false; 語句,經過實際測試,增加了這一行之後,新建日誌,數據庫就不會出現一篇自動存檔的草稿了。
但是這種修改WordPress源代碼的方法是很不好的,這會導致以後每次WordPress升級,都需要維護修改一次,工作量會越來越大,不如用插件的方式解決,可惜目前實在找不到如何使用插件來解決這個問題,要是WordPress下一個版本能官方解決就好了。
更新:上述禁用自動草稿(Auto-Draft)的方法僅僅針對Wordpress 3.1以前的版本,對Wordpress 3.1以後的版本是無效的,添加後保存文章時提示“沒有修改權限&rdquo ;。 WordPress 3.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' ) ) );
}
總結:WordPress的自動保存(Auto-Save)、歷史版本(Post Revisions)和自動草稿(Auto-Draft)的功能真是麻煩,在數據庫中產生大量垃圾數據,並且自動草稿(Auto-Draft)目前只能通過修改源代碼來實現,希望WordPress官方能夠提供一種選項,讓用戶可以選擇是否啟用自動草稿(Auto-Draft)功能。
文章轉載月光博客