WordPressの自動保存・リビジョンの違いと無効・制御する方法

Photo by Studio Incendo

どっかの記事で「データベースを圧迫する!」というのを読んでから、自動保存・リビジョン機能を無効化するプラグイン「Disable Revisions and Autosave」を利用していました。

しかし最近、メインで使用しているChromeブラウザがよくフリーズし・・・途中まで書いた記事が消えるコトが多発。

Disable Revisions and Autosaveは完全に停止させてしまうので、自動保存をコントロールしつつリビジョンを停止するコトが出来ないかを調べてみました。

自動保存とリビジョンはどんな機能なの?

簡単に言えば編集中の投稿のバックアップです。WordPressはご丁寧にこのバックアップ機能を2つも用意してくれているんですね。

まず疑問に思ったのが「なぜ2つのバックアップ機能がある?違いは何なの?」という点です。自動保存・リビジョンは似ているけども厳密には違う役割を持っているんですよね。

それぞれが投稿画面とデータベースを見ながらどういう動きをしているのかをテストしてみました。

自動保存は意外と良いヤツだった!

自動保存がどんな動作をしていくのかをチェックしていきたいと思います!

まず「新規追加」で投稿画面に入り、タイトルと「自動保存TEST1です。」というテキストを記述しました。Post IDは「13」になり、自動保存が発動します!
データベース上でもIDは「13」で保存されました。post_contentには先程入力した文字、そしてpost_statusは「draft」で、下書きという意味ですね。
更に「自動保存TEST2です。」とテキストを入力し、少々待つと自動保存されました。

データベース上ではIDが「13」のままで変化なし!post_contentは追加された文字が反映されています。IDが増えていないというコトは、上書き保存されたのが分かるでしょう。

このように自動保存は個別に保存されるワケではなく、常に上書き保存されていくのでデータベースを大きく圧迫させるようなコトはないようです。

自動保存とリビジョンはセットで考えられるコトが多く「データベースを圧迫します、プラグインで無効に!」と書かれている記事が多いですが、実はそうでもないというコトが分かりました。
自動保存のポイント

  • 投稿ごとに1つだけ下書きデータとして、データベースに保存される。
  • 複製されるのではなく、上書き保存である。
  • 保存される間隔はデフォルトで60秒毎。その間に文字を入力しなければ上書きはされない。
  • データベースを肥大化させるコトはない。

ふえ~るリビジョン!制限が必要かも!?

今度はリビジョンがどう動いてるかをチェックしてみます。「新規追加」でタイトルを入力しました。先程と同じように、自動保存が発動しているのが分かりますね。
データベース上でも同じような結果となっています。IDは「24」です。
リビジョンは下書き保存をした時に作成されます。「リビジョン1」と入力して「下書きとして保存」をクリックします。

データベース上でIDは「25」として、リビジョンが新しく保存されたのが分かると思います。

post_statusは「inherit」となっています。inheritは継承といった意味合いです。今度は「リビジョン2」と入力して「下書きとして保存」をクリック。

また、増えた・・・。

今度はIDが「26」になり、post_contentにも追加入力した文字が表示されています。

ちなみにID24は自動保存として上書きされてるのが分かります。自動保存とリビジョンは別々に動いてるんですねぇ。
今度は公開したらどうなるんだろう?という疑問が浮かんできたので・・・「リビジョン3公開」と入力して、「公開」をクリック。

またまた、増えてる・・・。

今度はIDが「27」のリビジョンが追加されています。これで合計3つのリビジョンが作られたコトになります。
今度は公開後に記事を追加した想定で「リビジョン4更新」と入力し、「更新」をクリック。

またまたまた・・・IDが「28」のリビジョンが追加されました。もはやリビジョンを止めるのは無理なのか!?相変わらず良いヤツな自動保存くんは上書きしまくっています笑。

も、も、、もう一回だけぇ!!
「リビジョン5更新」と入力して「更新」をクリック。

またまたまたまた・・・もうあかん。リビジョンIDが「29」が追加されました・・・。

結論!リビジョンは制御せよ!
リビジョンのポイント

  • 編集途中の内容を個別に保存出来るので、リビジョン同士を比較するコトが出来る。容易に前リビジョンに戻れる。
  • 投稿中に「下書きとして保存」をクリックするコトでリビジョンが作成される。(「下書きとして保存」をクリックしなければ、リビジョンは作成されない。)
  • WordPress上ではPost IDの変更はないが、データベース上では新たにPost IDが割り振られて保存される。(元の投稿がID1000であれば、リビジョンは作成される毎にID1001、1002…1010と増えていく。)
  • 投稿を公開した時・ゴミ箱に入れた投稿を復元した時にリビジョンは作成される。

自動保存・リビジョンの制御の方法!

テストの結果、自動保存は上書きでそこまで心配するコトもないけどリビジョンは制御または停止してあげた方が良いのかなと思います。

記事数が少なければ、そこまで心配する必要はないのかもしれないが記事数が100、、500、、1000と増えていけば、結構負担きそうですよね。というコトでリビジョンを制御する方法を紹介します!

プラグインで制御せよ!

リビジョンを制御する方法の1つにプラグイン使う方法があります。有名どこのプラグインは2つ!

Revision Control

インストール方法

  • 上記リンクからダウンロードし「wp-content/plugins」内にアップロード。
  • WordPressダッシュボード内「プラグイン→新規追加」でRevision Controlで検索し、インストールして有効化。

設定方法

設定方法も非常に簡単で、WordPressダッシュボード内「設定→リビジョン」から保存数を選択するだけです。また投稿ごとに保存数を選ぶコトも出来ます。

WordPress Disable Revisions and Autosave plugins

Diable-Autosave
自動保存のみ無効
Disable-Revisions
リビジョンのみ無効
Disable Revisions and Autosave
両方無効

3つのプラグインが用意されているので、好みのモノをダウンロードします。そして「wp-content/plugins」内にアップロードします。

このプラグインは有効化してあげるだけで動作するので設定はありません。元々これを使用していましたが、自動保存をコントロールしたいので他の方法を探してたんですよね。そこで見つかったのが、次の方法です。

プラグインを使わないリビジョン制御方法と自動保存の秒数を変更するには?

この方法はITTI laboさんの記事を参考にさせていただきました。
/*リビジョン停止*/
define('WP_POST_REVISIONS', false);
wp-cofig.php内の「require_once(ABSPATH . ‘wp-settings.php’);」よりも前に記述します。
/*リビジョン制限*/
define('WP_POST_REVISIONS', 10);
記述する箇所は停止の場合と同じで、10回まで保存するという制限にする時は「10」と記入します。
/*自動保存の秒数*/
define('AUTOSAVE_INTERVAL', 1800);

記述する箇所はリビジョンの停止・制限と同じで、秒単位で記入します。1800秒なら1時間に1回自動保存します。

wordpressのリビジョンと自動保存を停止、回数制限する方法 | ITTI labo

過去のリビジョンを削除するならこのプラグイン!

過去の投稿で溜まったリビジョンを削除するプラグインがあります。更新が止まっているようですが、最新版のVer3.8でも使用可能です。

Better Delete Revision

インストール方法

  • 上記リンクからダウンロードし、「wp-content/plugins」内にアップロード。
  • WordPressダッシュボード内「プラグイン→新規追加」でBetter Delete Revisionで検索し、インストールして有効化。

設定方法

WordPressダッシュボード内「設定→Better Delete Revision」で「Check Revisions Posts」をクリック。
「Yes, I would like to delete them!」をクリックして削除完了。
削除後、データベースの最適化を行ってあげるので「Optimize Your Database」をクリック。

「Optimize WordPress Database」をクリックして、データベースを最適化完了です。

あくろのまとめ!

自動保存とリビジョンの違いなどを自分でテストしてみるコトで、すっきりしました!

参考記事だけを当てにするのではなく、自分でためしてみるのはとても大事ですね。非常に勉強になりました。ちなみにあくろの設定はこんな感じです。
/*リビジョン停止*/
define('WP_POST_REVISIONS', false);
/*自動保存制限*/
define('AUTOSAVE_INTERVAL', 300);

自動保存は5分に1回!リビジョンは停止!これで試してみて、また調整していきたいと思っています。

シェアするとアナタの今日はハッピーになるよ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA