人気コンテンツ管理システム(CMS)であるWordPressで固定ページや投稿の下書き保存や更新を行うと、自動的にリビジョンが生成されます。リビジョンは重要なコンテンツの損失を回避するのに役立ちますが、徐々に蓄積されてストレージが圧迫されることで、サイトパフォーマンスが低下する可能性があります。
したがって、リビジョンがサイトに与える悪影響は最低限に抑えたいところです。例えば、不要なリビジョンの削除や無効化、保存されるリビジョン数の制限など。また、データベースを最適化することもできます。
この記事では、WordPressのリビジョンとは何か、そしてリビジョンの適切な管理方法をご紹介していきます。
WordPressのリビジョンとは
WordPressのリビジョンは、サイトの固定ページや投稿に加えられた変更を自動的に保存する機能です。「下書き保存」「公開」「更新」をクリックする際に生成され、編集中であっても最新のデータが60秒ごとに保存されます。

この機能は、サイトで執筆や更新を行う際に便利な機能で、誤ってブラウザのタブを閉じてしまったり、停電でインターネット接続を失ってしまったりなどの予期せぬ事態が発生しても、リビジョンがバックアップの役割を果たし、直近の内容を復元することができます。
また、コンテンツを過去の内容に戻すことも可能です。例えば、ある記事のパフォーマンスが以前よりも低下していることがわかり、最近加えた変更を取り消したい場合にとても便利です。
また、複数人でコンテンツ制作を行っているサイトでも有用で、どの投稿や固定ページが編集されたかを確認できるだけでなく、変更を行ったユーザー名とタイムスタンプも記録されるため、共同作業が容易になります。
WordPressのリビジョンの問題点
WordPressのリビジョンは、適切に管理しなければ深刻な問題を引き起こす可能性があります。というのも、サイトに固定ページや投稿が増えれば増えるほど、リビジョンの数も増えていきます。
大規模なサイト、または頻繁に変更を加えるサイトは、すぐにデータの肥大化を引き起こします。リビジョンが生成されるたびに、WordPress データベースのwp_post
テーブルにpost_type
の値がrevision
の行が追加されていきます。
データベースが大きくなれば、より多くのストレージ容量を消費することになり、サイト速度に影響が出ます。サイト速度の低下は、ユーザーエクスペリエンスと検索エンジン最適化(SEO)に悪影響を与えます。
したがって、WordPressのリビジョンはある程度制御することが重要です。これにはリビジョンを完全に無効にする、リビジョン数を制限する、データベースを最適化するなど、さまざまな方法があります。
リビジョンへのアクセス方法
ブロックエディターの場合、リビジョンは投稿や固定ページのエディターの右側パネルに表示されます(以下参照)。
クラシックエディターを使用している場合、「表示オプション」(画面右上の表示)でリビジョンを選択している場合は、エディターの下部にも表示されます。

リビジョンの数字をクリックすると、「リビジョン」ページが表示され、保存されているすべてのリビジョンを確認したり、2つを選択して並べて内容を比較したりすることができます。

上部にあるスライダーを使って、各リビジョンを確認、復元することができます。変更された箇所は赤と緑で強調表示され、濃い赤色は削除された内容、濃い緑色は追加された内容を示します。
既存の内容を維持し、変更を加えずにエディターに戻るには、画面左上の「エディターへ移動」をクリックします。
以前のリビジョンを復元する方法
投稿や固定ページに加えた変更を元に戻したい場合は、リビジョンを復元することができます。
デフォルトでは、リビジョンは時系列で表示されます。現在の内容とある時点のリビジョンを並べて比較したい場合には、右上の「2つのリビジョンを比較」を選択すると、2つのリビジョンを手動で選択することができます。

復元したいリビジョンを見つけたら、「このリビジョンを復元」をクリックします。

このボタンをクリックすると、比較しているバージョン(リビジョン画面の右側の列に表示されているバージョン)が復元されます。
リビジョンを有効にする方法
WordPressのリビジョンはデフォルトで有効になっていますが、ご利用のサーバーやWordPressのインストール方法によっては、無効になっていることがあります(または別のユーザーが無効にしている場合も)。
そのような場合、WordPressでリビジョンを有効にするには、サイトのルートディレクトリにあるwp-config.php
ファイルを編集します。アクセスには、SFTP(Secure File Transfer Protocol)クライアントが便利です。Kinsta以外のサーバーで、cPanelを使用している場合は、「ファイルマネージャー」からアクセスできるはずです。
対象のファイルを開き、以下のコードを見つけます。
define('WP_POST_REVISIONS', false);
false
の値をtrue
に変更すればOKです。
このコードが見つからない場合は、“ABSPATH”
と“/* That's all, stop editing! Happy publishing. */”
の前に以下を貼り付けてください。
define('WP_POST_REVISIONS', true);

編集を終えたら、ファイルを必ず保存してください。これでWordPressにログインし直すと、リビジョンが有効になります。任意の固定ページまたは投稿エディターを開いて確認してみてください。
リビジョンを無効にする方法
WordPressのリビジョンが不要であれば、完全に無効にしてしまうという手もあります(リビジョンの制限、削除、データベースの最適化は後ほど解説)。その場合は、有効にするのと同様に、サイトのwp-config.php
ファイルを開き、値をtrue
からfalse
に変更します。
wp-config.php
ファイルの編集作業に抵抗がある場合は、Disable Post Revisionのような軽量プラグインを使って、無効にすることもできます。このプラグインをインストール・有効化して、「設定」>「投稿設定」に移動します。

リビジョンを無効にしたい投稿タイプを選択して変更を保存すれば完了です。
WordPressデータベースの最適化
サイトを長く運営すればするほど、データベースに保存されるリビジョンも増えていくことは先に触れたとおり。何年もコンテンツを公開・更新していれば、大量のリビジョンが蓄積されていきます。
特に長年運営されているサイトであれば、過去に作成し更新を続けている記事のリビジョン数が100を超えることも珍しくありません。サイトで800件の固定ページと投稿を公開し、それぞれに100のリビジョンがあれば、データベースには8万件以上のエントリが存在することになります。これはWooCommerceストアでもよく見られる問題です。
とはいえ、リビジョンは便利な機能。リビジョンをしながらこのような蓄積を最小限に抑えるには、不要なリビジョンを削除するか、リビジョンの数を制限するのが得策です。続いて、手動またはプラグインでこれらの作業を行う方法をご紹介します。
なお、新規サイトには既存のリビジョンを削除する必要はないため、リビジョンの数を制限する方法を参考にしてみてください。
リビジョンを削除する方法
リビジョンを削除するには、プラグインを使用するのが効率的です。サイトのファイルを変更する必要もありません。その後、開発者向けに手動でリビジョンを削除する方法もご紹介します。
プラグインでリビジョンを一括削除する
プラグインを使ってリビジョンを削除するには、いくつかの選択肢があります。
おすすめはWP-Sweepプラグインです。

WP-Sweepは、データベース内の古いリビジョンを簡単に削除できる使いやすい無料プラグインです。「プラグイン」>「プラグインを追加」に移動し、プラグインを検索してインストール・有効化します。

有効化したら、「ツール」>「Sweep(データベース掃除)」に移動します。

この画面では、リビジョンの一覧とその数を確認できます。

保存しておきたい重要なリビジョンがないかなどを確認した上で、「掃除」をクリックします。これをすべての項目で繰り返します。リビジョンが削除されると、以下のように完了を伝えるメッセージが表示されます。

パフォーマンスへの影響から、このプラグインで一度に表示される項目数は500までです。長年運営しているサイトであれば、これよりも多くのリビジョンが表示されることが予想されます。
リビジョンを個別に削除する
WordPressのリビジョンを個別に削除することも可能です。これにはプラグインを使用するか、データベースで直接エントリを削除します。開発作業に慣れている場合やプラグインを使用したくない場合を除けば、前者の方法がおすすめです。
この作業には、Simple Revisions Deleteプラグインが便利です。無料で利用でき、設定ページなどはありません。インストールして有効化した後、投稿や固定ページに移動すると、各リビジョンの横に「削除」の文字が表示されるようになります(以下参照)。

これでリビジョンを確認しながら不要なものを削除することができます。
より高度な方法としては、phpMyAdminにアクセスしてSQLクエリを実行することもできます。ただし、WordPressリポジトリのフォーラムには、サイトの重要な要素を壊す悪質なコードも多数出回っているため、この方法には注意が必要です。
クエリを使ってリビジョンを安全に削除するには、phpMyAdminアカウントにログインし、左側のパネルからWordPressのデータベースを選択して、「SQL」タブをクリックします。

WordPressのデータベース上で実行するコマンドを入力します。コマンドボックスに以下を貼り付けてください。
DELETE FROM wp_posts WHERE post_type="revision";
wp_
は、実際のWordPressデータベースの接頭辞に置き換えてください。「Go」をクリックしてコマンドを実行すると、データベース内のリビジョンがすべて削除されます。
WordPress開発者は、WP-CLIを使って投稿のリビジョンを削除する方法もあります。以下はWP-CLIコマンドの例です。
$ wp post delete $(wp post list --post_type='revision' --format=ids)
wp post delete
コマンドの詳細はこちらをご覧ください。
なお、データベースから古いリビジョンを削除しても、それ以後の固定ページや投稿のリビジョンが生成されなくなるわけではありません。今後の策としては、リビジョンの数を制限してデータベースの肥大化を避けることをおすすめします。
リビジョン数を制限する方法
保存するリビジョンの数を制限することで、データベースのクリーンアップの頻度を最小限に抑えることができます。これもリビジョンの削除と同様、プラグインを使用することができます。
プラグインでWordPressのリビジョン数を制限する
プラグインを使ってWordPressのリビジョン数を制限する場合は、無料のWP Revisions Controlプラグインがおすすめです。このプラグインでは、リビジョン数を制限したり、リビジョンを完全に無効したりすることができます。
サイトにインストールして有効化したら、管理画面の「設定」>「投稿設定」に移動し、「WP Revisions Control」セクションでリビジョン数を指定することができます。

投稿や固定ページなど、保存したいリビジョンの数を設定します。カスタム投稿タイプもこの画面に表示されます。
リビジョンの数に上限はなく、0
に設定すると、その投稿タイプのリビジョンが完全に無効になります。設定を終えたら、「変更を保存」をクリックして完了です。
プラグインなしでWordPressのリビジョン数を制限する
プラグインを使わずにリビジョン数を制限するには、wp-config.php
ファイルを編集します。cPanelのファイルマネージャーまたはSFTPクライアントを使って実行可能です。
wp-config.php
ファイルを開いたら、以下のコードを貼り付けます。
define('WP_POST_REVISIONS', 3);
上の例では3
としていますが、固定ページや投稿ごとにデータベースに保存したいリビジョン数に適宜変更してください。作業を終えたらファイルを保存し、サーバーに再アップロードします。
まとめ
WordPressのリビジョンは、予期せぬ事態に作業内容が失われるのを防ぐのに便利な機能です。過去の内容を簡単に復元することもできるため、多くのコンテンツを公開したり、頻繁に変更を行なったりする場合には重宝します。しかし、大規模なサイトや長年運営しているサイトでは、リビジョンの蓄積によりデータベースに不必要な負荷がかかり、サイトのパフォーマンスが低下してしまう可能性があります。
リビジョンを適切に管理するには、以下のような方法があります。
- サイトの
wp-config.php
ファイルを編集して、リビジョン機能を無効にする。 - Simple Revisions Deleteなどのプラグインを使って不要なリビジョンを個別に削除するか、phpMyAdminやWP-CLIを使ってデータベースから削除するか、WP-Sweepなどのプラグインでリビジョンを一括削除する。
wp-config.php
ファイルを編集するか、WP Revisions Controlなどの無料プラグインを使ってリビジョン数を制限する。
WordPressサイトのパフォーマンスはデータベースの最適化が鍵。データベースを最適化する方法もご紹介しています。