處理 WordPress 文章版本

by 張家振 on Dec 24, 2008 , 3 comments

最後更新日期:2009-08-11

WordPress 2.8 之後,又因為 Autosave 的功能無法被以下插件控制 (Autosave 雖然貼心,但是骨子裡還是一直在資料庫中寫入許多版本。);於是乎,找來了不在 WP Plugin Directory 中的這隻 Disable Revisions and Autosave 來同時關閉文章版本與自動存檔。

自從 WordPress 更新到 2.6 版後,就加入了 Post Revision 的功能,用來記錄每編寫的版本存檔,是種方便作者校對、回溯的方便功能;但是其造成的資料庫痴肥、搜尋外掛等問題令人頭大。

因此我在 WP 2.6 時代使用 No Revision 這隻外掛來解決這個問題!然而更新到 WP 2.7 後,原本以為這隻許久沒更新的外掛能正常運作,沒想到它在 Pages 的部份出包了;原因在於 WP 2.7 對資料庫的結構有稍微變動,導致這個外掛失效。因為等不及這隻外掛作者更新,所以另外找了這隻號稱可以支援到 WP 2.8 的 Revision Control

安裝完之後不但可以在後台設定預設關閉 Posts 以及 Pages 的 Revision 功能,或是限制只能有 2 份版本來減找資料庫肥度,更可以在每篇文章、頁面中多出一個欄位來控制是否使用 Revision 功能,目前用起來還不錯。

已經遭受到 Revision 波及資料庫的可以參考用 haseo 在 dogg3h 部落格中的這篇討論 Post Revision 功能的文章中的執行 SQL Command 的方法,把資料庫裡面的屎給清乾淨......

在伺服器找到類似 phpMyAdmin 這樣的管理 SQL 資料庫介面中,分批執行這三個指令:

DELETE FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type = 'revision');

DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type='revision');

DELETE FROM wp_posts WHERE post_type='revision';

上面的 wp_postmetawp_postswp_term_relationships 是預設於 wp-config.php 的名稱,如果您有手動修改記得對照改過名稱後再執行指令。