ほとんどの人が使わない機能だと思うWordPressのリビジョン。
このリビジョン機能を制限しないと後々サイトの表示速度に関わる原因の一つになってしまいます。
「リビジョン」は投稿や固定ページを更新するたびに、更新履歴(更新時の記事内容)を保存する機能です。更新を何度も繰り返した時に、更新履歴から過去の記事内容に戻したいという時があるかもしれません。そんな時は嬉しい機能なんですが、活躍する場はとても少ないと思います。
僕は一度もリビジョン機能を使って過去の記事内容へ戻したことは一度もないですね。リビジョン機能を頻繁に使って過去の記事内容へ戻してるよって人は、すごく少ないんじゃないでしょうか?
ほとんど使う人の少ないリビジョン機能だけど「何がそんなに問題なの?」過去の記事内容を保存しておいてくれるなら「リビジョンは制限する必要はないんじゃないの?」なんて思うかもしれません。
でも、リビジョン機能を制限しないと記事を更新するたびにデータが増え続け、データベースのテーブルサイズが大きくなって(肥大化して)、サイト全体の表示速度に影響を与えてしまいます。
(記事を追加するだけでなく、記事を編集し更新する度に記事のコピーデータが増えていきます。)
サイトの表示速度が遅くなればgoogleからの評価が下がる要因の一つになってしまうので、評価を下げない為にもリビジョンを適切に制限して、表示速度を遅くする原因の一つを解決しましょう。
目次
なぜリビジョンの機能制限やデータ削除が推奨されるのか?
WordPressのリビジョン機能を簡単に言えば、記事を更新した時に記事のコピー(リビジョンデータ)を保存しているんです。
だから、記事を作成したり編集したりする時に、更新ボタンを何度も押していると、リビジョンデータがどんどん増えていくんです。
(リビジョンデータが増えるのは、更新ボタンを押した時以外にもありますが、ここでは省略します。記事内容を変更せずに更新ボタンを押した時はリビジョンデータは増えません。)
そんなリビジョンデータは、記事を過去の状態に戻す時にしか使わないデータなので、リビジョン機能を使わない人にとっては、ほとんどがゴミデータの様なものですよね。
運営期間が長く記事数が多いサイトになれば、ゴミデータ(リビジョンデータ)が多くなるでしょう。
少し想像してみてください。
ゴミの山から目的の物を探し出すには相当な力がいりますよね。
それは、人間も機械も同じです。
WordPressはアクセスがある度に、データベースから必要なデータを探しだして表示しています。リビジョンデータ(ゴミデータ)が多くなり肥大化したデータベースになると、サイトの表示速度が遅くなるのも納得ですよね。
だから、サイトの高速化の一つとしてリビジョンデータの削除や、リビジョン機能の制限が推奨されているのです。
リビジョンと一緒に語られる自動保存機能
リビジョンの話題と一緒に語られているのが自動保存機能です。
「リビジョンは自動保存の事だ」と書かれてる記事や「リビジョンと自動保存は違う」と書かれてる記事を目にします。でも、実際に僕が色々試して動きを確認してみると、どちらも半分当たりという感じでした。
自動保存機能はエディタの内容を変更して一定時間経つと、更新ボタンを押してないのにリビジョンデータとして保存されます。
じゃあ「自動保存はリビジョンと一緒じゃん!」と思うかもしれませんが、リビジョンとは違う部分があります。
それは、自動保存用のリビジョンデータを1つ作り、自動保存する時はそのデータに上書きするんです。リビジョンデータは複数作成されるが、自動保存するリビジョンデータは1つしか作成されないのです。
男女の過去の恋愛保存方法として、「男は別名保存」「女は上書き保存」と言われます。
リビジョンと自動保存の違いは、男女の恋愛保存方法に例えると、分かりやすいかもしれませんね。
どのような制限をするのが良いの?
リビジョンの制限
リビジョンを制限しなければ、上限なく増え続けてデータベースが肥大化し、サイトの表示速度に影響を与える原因になります。だから、リビジョンは上限を設けて、一定以上は増えない様にするのが好ましいでしょう。
リビジョンの上限数は3~5個くらいで十分だと思います。
僕のように、小まめ更新ボタンを押してしまう人には、物足りない数かもしれませんね。なので、リビジョンの使用頻度を考えて、自分に合った上限数を設けてください。
リビジョンの機能を停止する事もできますが、もしもという時があるかもしれないので、リビジョン機能の停止はオススメしません。
上限数を設けてリビジョンを増やさない方法とは別に、上限数は設けないけど指定した期間より古いリビジョンデータを、定期的に削除する方法もあります。
僕は当初、リビジョンデータ数に上限を設けていましたが、今は上限を設けず定期的に古いデータを削除する方法をとっています。機能を最大限に使う事ができて、データベースの肥大化を極限まで抑えられるのでオススメです。
リビジョンに上限を設ける方法だと、古く使わなくなったデータが、残ったままになりますからね。
ゴミになったデータは削除するに限ります。
自動保存の制限
自動保存はデータが増え続けるという事はないので、機能を制限する必要はないと思います。
でも、自動保存がウザいといった理由で機能を停止したり、保存する間隔(秒数)を大きくしたりする人もいます。
自動保存は、ブラウザがクラッシュしたり、間違えてブラウザを閉じたりした時に役に立つ機能なので、機能制限するのはオススメできないですね。
PHPコードを記述してリビジョンと自動保存機能を制限する方法
リビジョン機能を制限するには、wp-config.phpにコードを記述するか、プラグインを使うかの2通りになります。
コードを記述するのは難しそうですが、数行なので初心者の人でも簡単にできます。
インストールするプラグインの数を減らしたい人は、wp-config.phpにコードを記述するのにチャレンジしてみてください。
phpファイルを触りたくないという人は、リビジョンをコントロールするプラグインを紹介するので、利用してみてください。
wp-config.phpにコードを記述してリビジョンをコントロール
コードを記述する場所はwp-config.phpの最後に記述されている
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
の上ならばどこに記述しても問題はありませんが、wp-config.phpに追加するコードは、上記コードの直上に記述すれば分かりやすいと思います。
リビジョン機能の停止
wp-config.phpに下記コードを記述します。
define('WP_POST_REVISIONS', false);
この1行だけ記述する事でリビジョン機能が停止します。
リビジョンデータは1つも増えなくなります。
記事編集ページなどからリビジョン項目が消えます。
リビジョン保存数を指定
wp-config.phpに下記コードを記述します。
define('WP_POST_REVISIONS', 5);
上記の記述では5個までリビジョンデータが保存されます。
10個までリビジョンデータを保存したければ数値の5を10に変更すれば10個まで保存されます。
ここで設定した数値を越えて、リビジョンデータが保存される場合は、古いデータが削除されて新しいデータが保存されます。
functions.phpにコードを記述して自動保存をコントロール
リビジョンのコントロールとは違い、自動保存を停止するコードはfunctions.phpに記述します。
しかし、functions.phpはテーマによって記述されてる内容が違うので、初心者の人だと「そっ閉じ」してしまう難しい内容だったりします。
でも、記述されている内容がどのテーマも必ず同じ場所があります。
それはfunctions.phpの先頭「<?php」の部分です。
この「<?php」の直後に改行して記述すれば、phpの分からない人でも間違う事はないと思います。
自動保存機能の停止
functions.phpに下記コードを記述します。
function disable_autosave() {
wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disable_autosave' );
この4行を記述するだけで、自動保存機能が停止します。
自動保存する時間の間隔
リビジョンのコントロールと一緒で、wp-config.phpに下記コードを記述します。
define('AUTOSAVE_INTERVAL', 3600);
指定する数値は秒数になります。
上記の設定では1時間(60秒×60分=3600秒)毎に自動保存されます。
コードを記述しない(指定しない)場合は60秒毎に自動保存されます。
プラグインを使ってリビジョンを制限する方法
リビジョンをコントロールするプラグインで、よく紹介されているのが「Revision Control」というプラグインです。
使いやすくて僕も利用していたプラグインです。
他にも、WordPressのプラグイン新規追加で「revision」を検索してみると、いくつもリビジョンをコントロール出来たり、掃除出来たりするプラグインが出てくるのですが、「Revision Control」に勝るプラグインに出会ってないです。
「Revision Control」は最終更新が2年前なのが気になりますが、WordPress最新のバージョンで「互換性があります」と表示されているので、テストはされているのかもしれませんね。
「Revision Control」を使うのをやめて、古いリビジョンデータを定期的に削除するのに使いだしたプラグインは、「WP-Optimize」になります。
「WP-Optimize」はリビジョンデータ以外にもゴミ箱内の投稿やコメントなど、色んなデータの掃除が出来ます。
スケジュールを設定すれば、毎日、毎週、半月、1ヶ月毎など自動でデータベースの掃除をしてくれるプラグインです。
リビジョンを制限するのに「Revision Control」を、リビジョンを制限せずに古いデータを掃除するのに「WP-Optimize」を紹介します。
Revision Controlの利用方法
①プラグイン「Revision Control」のインストールと有効化。
「プラグイン > 新規追加」のページで「Revision Controlとキーワード検索すると3ページ目に表示(2017年09月時点)されます。
プラグイン「Revision Control」をダウンロードするのはこちらのページから。
インストールしたら有効化しましょう。
②リビジョン保存数の設定。
投稿、固定ページと種類別にリビジョンの保存数を設定できます。
カスタム投稿を作成すれば設定項目が増えていきます。
リビジョンの範囲は、リビジョン保存数を設定するセレクトボックスの内容を変更するだけなので、初期値で問題ないと思います。
この設定をするだけでリビジョンの保存数を制限する事ができます。
「リビジョン最大保存数:無制限」に設定していてもリビジョンが保存されないバグがあります。
リビジョンデータを残したい場合は、リビジョン保存数を設定するか、プラグインを停止しましょう。
③-①投稿や固定ページの編集画面でリビジョンを制御。
記事別にリビジョン保存数の設定をすることが出来ます。
変更したいリビジョン保存数を選択して、記事の更新ボタンを押すと設定が反映されます。
ここにもバグがあり、一度設定を変更すると元に戻せなくなります。
③-②リビジョンの削除。
削除したいリビジョンにチェックを入れて、削除ボタンを押すとリビジョンを削除することができます。
③-③リビジョンの比較。
比較したいリビジョンを選択して、比較するボタンを押すとリビジョンデータの違いを見ることができます。
③-④リビジョンデータの復元。
復元のリンク文字をクリックするだけで、記事内容をリビジョンデータに置き換えます。
確認などなくクリックした瞬間に置き換わるので、復元する時は注意しましょう。
操作方法がとても簡単なので、リビジョン保存数を制限する為に使うプラグインとしては、優秀だと思います。
紹介してるブログも多いし、有効化済の件数も多く、評価の★も多いですしね。
データベースの肥大化を、サイト運営初期から抑えたい人は「Revision Control」を利用してみてください。
WP-Optimizeの利用方法
①プラグイン「WP-Optimize」のインストールと有効化。
「プラグイン > 新規追加」のページで「WP-Optimize」とキーワード検索するとリスト1つ目に表示(2017年09月時点)されます。
プラグイン「WP-Optimize」をダウンロードするのはこちらのページから。
インストールしたら有効化しましょう。
②手動でデータベースを掃除。
「Run all selected optimizations」のボタンを押せば、チェックした項目を一括で最適化(削除)できます。
個別に最適化を行いたい場合は、右にある「最適化を実行」ボタンを押してください。
- すべての投稿リビジョンをクリーン
- Clean all auto-drafts and trashed posts
- Remove spam and trashed comments
- 未承認コメントの削除
- 期限切れの transient オプションを削除
- ピンバックの削除
- トラックバックの削除
- 投稿メタデータのクリーン
- コメントメタデータのクリーン
- 孤立したデータのクリーン
投稿、固定ページのリビジョンデータを全て削除します。
自動下書きデータとゴミ箱内の投稿データを全て削除します。
スパムコメントとゴミ箱内のコメントを全て削除します。
未承認のコメントを全て削除します。
Transients APIによって保存された有効期限切れのキャッシュデータを全て削除します。
ピンバックデータを全て削除します。
トラックバックデータを全て削除します。
孤立した投稿メタデータを全て削除します。
孤立したコメントメタデータを全て削除します。
孤立したデータを全て削除します。
必要な項目にチェックを入れて一括で最適化するか、個別に必要なことだけ最適化しましょう。
赤でマークされた項目は集中的なデータベース操作になるようなので、最適化する時は最適化の前にバックアップを取ったほうが良いようです。
「すべての投稿リビジョンをクリーン」「Clean all auto-drafts and trashed posts」この2つの項目を最適化するだけでも、データベースの肥大化を抑えることができます。
③テーブルの情報。
WordPressで利用されているデータベースの情報が表示されます。
テーブルのレコード数やデータサイズなど見ることができます。
操作するようなことはありません。
③自動クリーンアップの設定。
「スケジュールされたクリーンアップと最適化を有効化 (ベータ機能)」にチェックを入れると自動クリーンアップが有効になります。
【一般設定】
- 直近〇週間分のデータを保持する
- 管理バーリンクを有効化
設定した期間より古いデータのみ削除します。
チェックを入れると管理画面上部の管理バーにWP-Optimizeのリンクを表示します。
【自動クリーンアップ設定】
- スケジュールされたクリーンアップと最適化を有効化 (ベータ機能)
- スケジュールタイプを選択
- データベーステーブルの最適化
- 自動リビジョンを削除
- Remove auto-drafts and trashed posts
- Remove spam and trashed comments
- 未承認コメントの削除
- 期限切れの transient オプションを削除
チェックを入れると設定した最適化のスケジュールを自動で行います。
最適化する時間を「毎日、毎週、半月毎、毎月(約30日毎)」から選択できます。
テーブルのオーバーヘッドを最適化します。
詳しくすると長くなるのですが、たま~に手動で最適化するくらいでいいので、スケジュールに組み込む必要はないですね。
リビジョンを削除するので、チェックを入れてスケジュールに組み込みます。
自動下書きデータとゴミ箱内の投稿データを削除するので、チェックを入れてスケジュールに組み込みます。
スパムコメントとゴミ箱内のコメントを削除するので、チェックを入れてスケジュールに組み込みます。
未承認コメントを全てチェックしたい人は、チェックせずスケジュールから外しましょう。
手動では赤マークされているので、必要な時に手動で最適化するのが良いと思います。
チェックせずにスケジュールから外します。
【Logging settings】
- Log events into PHP error log
- Log events into Simple History plugin
PHPのエラーを記録したい人はチェックを入れましょう。
「Simple History」をインストールしてなければチェックする必要はないでしょう。
必要な設定が出来たら「設定を保存」ボタンを押して設定したスケジュールを保存しましょう。
これで自動的にデータの最適化が行われるようになります。