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 就是五臟俱全了,功能強大,介面相對也複雜些。