WordPress 的自動保存 (Auto-Save) 和文章修訂 (Post-Revisioning) 功能跟 Word 的自動保存功能類似。很多文章會告訴你關閉這兩個功能,你只需要三行代碼。

1
2
3
define('AUTOSAVE_INTERVAL', 120 );  // 設置自動保存間隔,單位是秒,默認 60
define('WP_POST_REVISIONS', false ); // 禁用文章修訂功能
define('WP_POST_REVISIONS', 3); // 如果不禁用自動修訂,最多允許保存的版本數,3 表示最多保存 3 個修訂版

根據你的需要將上述三行代碼放到 wp-config.php 中,如果你不知道放在文件什麼位置,這個文件中已經有很多 define 開頭的代碼,和他們放在一起就可以。

很簡單對吧,就像這兩個功能都是累贅,毫無用處,如果你只想知道這些,寫這篇文章就毫無意義了。甚至你可能還不是百分之百的清楚自動保存和文章修訂到底有什麼區別,到底誰是讓數據庫數據膨脹的罪魁禍首。

那麼我們繼續看一看這兩個東西。

自動保存 (Auto-Save)

這是一個非常實用的功能,當你編輯文章的時候,WordPress 每隔 60 秒自動保存你輸入的內容,防止因為電腦掛機或者斷電而丟失辛苦勞動的成果。這個功能不同於自動修訂,你完全不用擔心它會讓你的數據庫數據膨脹,因為它只會創建一條記錄,每隔 60 秒更新一次,當文章發佈後,這條記錄的 post_status 會從 draft 變成 publish,沒有一點浪費的地方。

唯一給你帶來麻煩的可能是保存間隔太短,服務器難受,寫文章可能有間歇性卡的感覺,那麼你可以將時間設置的長一點。

define('AUTOSAVE_INTERVAL', 120 );  // 設置自動保存間隔,單位是秒,默認 60

如果你傾向於用 Word 編輯,之後拷貝到 WordPress 的編輯器中,你也可以完全禁用自動保存功能,在主題的 functions.php 中加上如下代碼就可以

1
2
3
4
function disable_autosave() {
    wp_deregister_script('autosave');
}
add_action('wp_print_scripts','disable_autosave');

禁用後的副作用:預覽功能不可用,必須保存為草稿才能預覽

如果服務器還不錯,這個自動保存功能基本不影響什麼,Sola 使用了 60 秒保存一次的自動保存,喜歡用 WP 的編輯器邊寫邊預覽,經常誤點 WP 菜單 (現在的菜單鼠標滑過就會彈出子菜單,很容易點錯),要是沒有 60 秒一次的自動保存,真不知道要浪費多少時間重新編輯了。

文章修訂 (Post Revisions)

在編輯文章時,如果文章標題、內容或者摘要等字段發生變化,WordPress 就會將當前版本保存為一個修訂版,方便你想退回到之前的版本,這有點像 svn 的工作方式。隨之而來的問題是,數據庫會被修訂版撐的很大,加之有自動保存的功能,讓這個修訂功能多少顯得有點累贅。

我們可以控制修訂版的數量,例如一篇文章最多保存 3 個修訂版

define('WP_POST_REVISIONS', 3);

這樣,每創建一篇文章,數據庫中會有 1 條 auto-save+最多 3 條 revision 。

或者完全禁用

define('WP_POST_REVISIONS', false );

可以通過運行一條 SQL 語句徹底刪除修訂版以及與之相關的 meta 信息

1
2
3
4
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b
ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c
ON (a.ID = c.post_id) WHERE a.post_type = 'revision';

關於自動草稿

自動保存產生的記錄叫做草稿,還有一種記錄叫做自動草稿,自動草稿在你點擊寫文章時就會自動創建。

如果你點擊寫文章後:

  • 輸入內容,自動保存生效
  • 手動將文章保存為草稿
  • 發佈文章

自動草稿記錄會被轉換成草稿或者文章,從而不產生垃圾數據。

如果你點擊寫文章,什麼也沒寫就關閉了,就產生了一條自動草稿垃圾記錄,修改這個問題需要更改源代碼,如果感興趣可以 google 一下,但如果可以養成良好的寫文章習慣,自動草稿根本不是問題,WordPress 也有一些回收機制,例如每次新建文章時會自動清除 7 天以前的自動草稿。

用插件管理文章不同版本

有一些插件可以幫助我們清理數據庫,管理文章的各個版本。

Wp Cleaner

使用時注意不要誤刪草稿,有時候我們會將沒寫完的文章保存為糟糕,刪了就慘了。

Revision Control

如果用短小精悍來形容 Wp Cleaner,那麼 Revision Control 就是五臟俱全了,功能強大,界面相對也複雜些。