リビジョンをコントロール!回数制限の設定や削除方法

WordPressのリビジョン機能は、投稿を更新前の内容の確認や前の状態に戻すことができる便利なものです。ただ初期状態ではリビジョンの数を制御できるようにはなっていません。増え過ぎていくと思わぬ弊害が出てしまうこともあるので、リビジョンが生成される回数の制限をかけたり不要なリビジョンを削除したりと、その数をコントロールできるようにしておきたいものです。

なぜリビジョンの制限設定が必要?

リビジョンがあることによって、以前の状態を復元したり変更内容を確認することができます。そのためそのデータを残しておきたい場合もあるでしょう。
しかし、そのデータが増えすぎるとデメリットが発生することも覚えておきたいところです。

何もしないと増え続けるリビジョン

リビジョンは記事を更新するときに、修正前のコピーを作って保存したデータです。そのためリビジョン機能を有効にしている場合、更新の際に公開用と保存用の2つを作成していることになります。

更新する際に「更新前」と「更新後」の2つのデータを保存している

そしてこのコピーデータは制限をしないとひたすら増え続けます。

10件の記事しか公開していなくても、その10件の記事それぞれに5件ずつリビジョンがあると50件もの投稿がデータベース保存されることになります。一文字修正やスペースを一つ追加、といった微修正でも更新ボタンを押せば新たな投稿データが保存されてしまいます。

そのため運用期間が長かったり、頻繁に投稿・リライトを繰り返すとすごい数になっていきます。

データが多いとサイト全体が重くなる

WordPressのデフォルトはリビジョン機能がONになっており、またリビジョン数の制限はありません。設定を初期状態のままにしていると、サイトの表示速度に影響を与える可能性があります。

回数制限をしていないと無制限に増えるため、更新(書き直し)頻度が多いほどデータも多くなります。データベースが肥大化すると、サイトが重くなって表示速度が遅くなる原因になります。

私たち人間が紙の資料を探すとき、10枚の資料の中からと100枚の資料の中では、探し当てる時間が変わります。探しものをするなら全体の量が少ない方が早く見つけられます。
それはコンピュータも同じ。データが多いと探し出すのに時間がかかってしまいます。

不要なデータを極力減らし処理速度を上げるためにもリビジョンの数を増やしすぎないようにすることが大切です。

リビジョンの上限を設定する or リビジョン機能のOFF

不要なデータが溜まらないようリビジョンの上限を設定します。上限を設定することで、一定数以上になったら古いリビジョンは自動的に削除されます。

リライト量や頻度にもよりますが、上限数は3〜5くらいが目安。保存数は3以上にした方がいいようです。
【参照】 WP_POST_REVISIONS を 1 に設定した場合の注意点 | MaryCore

便利なリビジョン機能ですが、以前の状態を確認・復元することがなければ不要な記事内容が保存されるだけです。そもそもこの機能を使わなくても問題なければ設定をOFFにしてもいいと思います。

以前この記事では「WP Revisions Control」というプラグインを使ったリビジョン数の制限設定をご紹介していましたが、プラグインの更新が途絶えてしまったのでコンテンツは削除しました。

WP Revisions Control – WordPress プラグイン | WordPress.org 日本語

他に良いプラグインが見つかったらまた更新いたします。

wp-config.phpでリビジョンコントロール

リビジョンの上限設定は wp-confing.php ファイルに記述します。記述場所は以下のコードより上の行にします。

/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}

リビジョンを停止する

リビジョンを使わない、という場合は以下のコードを追加。

define('WP_POST_REVISIONS', false);

これでリビジョンデータは一切作られません。編集画面からリビジョン項目が表示されなくなります。

これはリビジョンを停止するコードなのでリビジョンの削除はされません。既に記事をいくつか書いていて、リビジョンデータを削除したい場合は、別途プラグインを使って削除します。

「WP-Optimizeで不要なリビジョンを削除」へ

リビジョンの保存数を設定する

リビジョンの上限を設定するときは以下のコードを追加。

define('WP_POST_REVISIONS', 3);

数字のところに保存上限数を入れてください。その数字以上は保存されず、古いデータが削除され、新しいデータが追加されます。

functions.phpで投稿タイプごとにリビジョン機能を停止

functions.php に以下のコードを記述することでもリビジョンを停止させることができます。

wp-confing.php での設定は投稿関連全てのリビジョン機能を停止させるものですが、こちらでは投稿タイプごとに機能を停止させることができます。

function my_remove_supports() {
  remove_post_type_support('post', 'revisions');
}

'post' の部分は投稿タイプを指定します。上記の場合は「投稿」のリビジョン機能のみ削除されます。

「固定ページ」や「カスタム投稿タイプ」など全ての投稿タイプからリビジョン機能を無くしたい場合は各投稿タイプごとに記述します。

function my_remove_supports() {
  remove_post_type_support('post', 'revisions');
  remove_post_type_support('page', 'revisions');
  remove_post_type_support('custom_post', 'revisions');
}

WP-Optimizeで不要なリビジョンを削除

リビジョンの設定は完璧!しかしすでに不要なリビジョンが溜まってしまっている場合は、そのリビジョンを削除する必要があります。
またリビジョンに回数制限を設けても、それ以上にならなければどんなに古いデータでも残ります。記事数が多い場合などは、不要なデータを減らしてデータベースの容量を空けておくようにしましょう。

私がいつも使用するプラグインは「WP-optimize」です。
WP-optimize はデータベースの最適化を簡単にできるプラグインで、さまざまな機能のうちの1つにリビジョン削除があります。

WP-Optimize の最適化でリビジョンクリーン

WP-Optimize – Cache, Clean, Compress. – WordPress プラグイン | WordPress.org 日本語

インストールして有効化すると管理メニューに「WP-Optimize」が追加されるのでクリック。

移動した画面に「すべての投稿リビジョンをクリーン」という表示があるので、その横にある「最適化を実行する」ボタンをクリックします。

この操作だけでリビジョンを削除することができます。

リビジョンに限らずゴミ箱や自動下書き、スパムコメントなどのデータを削除することもできるので、不要なデータがあれば実行していきましょう。

WP-Optimize の設定でスケジュールや削除データ指定

初期状態ではチェックが入っていないので適用されませんが、残しておきたいデータや、定期的に削除したいデータを設定することができます。リビジョン以外のスケジュール設定もここで行います。

リビジョンの制限をしない場合は特に、定期的にリビジョンの整理を行う方がいいと思います。ぜひこういったツールを活用してください。

あまりプラグインを入れておきたくない人は、この作業が完了したら無効化・削除して大丈夫です。

データベースからSQLコマンドで削除

データベース操作に慣れていない方はプラグインを使った方が無難ですが、どうしてもプラグインを入れたくない時などはこちらの方法になります。
行う際はバックアップ必須です。もし消したくないものが消されてしまった場合でも戻せるようにしておきましょう。

データベースから一括で投稿のリビジョンを削除する場合、以下のコマンドを入力して実行します。

DELETE FROM wp_posts WHERE post_status = 'inherit' AND post_type = 'revision';

wp_posts テーブルから投稿タイプが revision のものを削除する」という命令です。これでリビジョンデータが全て削除されます。

以下のコードでテーブルにどのくらいリビジョンがあるかを確認することができます。データ量が多ければ削除する、必要なリビジョンが含まれていないかといった確認に使えます。

SELECT * FROM wp_posts WHERE post_status = 'inherit' AND post_type = 'revision';

※「wp_」の部分はサイト構築時に変更している場合もあります。その場合サイトで使用しているテーブル接頭辞に変更してください。

参考 : 【WP】投稿ステータスの「inherit(継承)」ってなに? – wp-note

【おまけ】自動保存のコントロール

リビジョン設定と併せて設定しておきたいものに「自動保存」があります。名前の通り、自動的に投稿内容を保存してくれる機能です。

間違えてブラウザを閉じてしまったり、意図せずクラッシュしてしまった時には助かる機能です。

自動保存の「間隔」を設定

自動保存のデータは更新の際に上書きするされるものなので増えることはありませんが、デフォルトでは1分間隔で自動保存されるので、間隔をもう少しあけたいという方は設定変更してみてください。

以下のコードを wp-config.php に記述します。

define('AUTOSAVE_INTERVAL', 3600);

「3600」の部分が保存間隔時間です。
秒単位で設定するので、1時間ごとに設定したい場合「60秒 × 60分 = 3600」となります。

自動保存を「停止」する

自動保存を停止したい場合は、functions.php に記述します。リビジョンや自動保存の間隔時間の設定とはファイルが異なるので要注意です。

以下のコードを functions.php に記述することで、自動保存が停止されます。

<?php
  function disable_autosave() {
    wp_deregister_script('autosave');
  }
  add_action('wp_print_scripts', 'disable_autosave');
?>

必要な分だけのリビジョンを設定しておく

リビジョン機能の有無・保存数は人によってまちまちだと思います。

私はほとんど使用しないのでこのサイトはリビジョン機能自体OFFにしています。特に問題が起こったこともありませんが、時々リビジョンがあったらよかったな…と思うことは正直あります。

個人で運用するサイトは要不要は自分で決めていいと思いますが、複数人で記事の投稿・編集を行うならあった方がいいと思います。
何人かで同じ記事をリライトする場合は特に、誰が何を変更したかわかるようにしておく、指示通りに変更されているかを確認する、などリビジョンが役に立つ場面が一人の時より多いと思います。

完全に無くしてしまわない方がメリットが大きい場合もあります。記事の書き方やサイトの運用方法よってリビジョンの設定を決めていきましょう。

カテゴリー : WordPress

TOPへ