WordPressサイトで、下書きを保存したり、すでに公開されている固定ページや投稿を更新したりすると、コンテンツマネジメントシステム(CMS)で自動的にリビジョンが作成されます。この機能を有効にすると、重要な作業データの損失が防げます。しかし、徐々に、WordPressのリビジョンがストレージを圧迫し、サイトのパフォーマンス低下を引き起こす可能性も。

ありがたいことに、リビジョンがサイトに与える悪影響を最小限に抑える方法は存在します。例えば、リビジョンを削除したり、無効にしたり、制限したりするだけでなく、リビジョンデータベースを最適化することもできます。

今回の記事では、WordPress のリビジョンについて(データがどこに保存されているのかなどを含め)理解を深めると共に、リビジョンがサイトに悪影響を及ぼさないようにする方法もご紹介します。

それでは、さっそく始めましょう。

そもそもWordPressのリビジョンとは

WordPressのリビジョンは、ウェブサイトの固定ページや投稿に加えられた変更を自動的に保存する機能です。最新のデータが60秒ごとに保存されます。「下書き保存」、「公開」、「更新」ボタンのクリックでも実行されます。

WordPressサイトのある記事で保存されたリビジョンの一覧
WordPressサイトのある記事で保存されたリビジョンの一覧

WordPressのリビジョンは、日頃からサイトで執筆や更新を行う人にとって便利な機能です。誤ってブラウザのタブを閉じてしまったり、停電になってしまったりと、予期せぬ障害が発生したときに復元できるバックアップの役割を果たします。

また、コンテンツを古いバージョンに戻すこともできます。例えば、ある記事のパフォーマンスが以前よりも低下していることに気づき、最近行った変更を元に戻したい時に便利です。

また、複数人でサイトのコンテンツを制作している場合にも、リビジョン機能は非常に便利です。どのような記事やページが編集されたかを確認できるだけでなく、変更を行ったユーザー名とタイムスタンプも記録されます。これにより、透明性が高まり、共同作業が容易になります。

WordPressのリビジョン機能の問題点

WordPressのリビジョン機能は、適切に管理しないと深刻な問題を引き起こします。基本的に、ウェブサイトに固定ページや投稿を追加すればするほど、リビジョンの数も増えていきます。

大規模なウェブサイトである、または、頻繁に変更を加える場合、これはすぐに(不要な)データの肥大化につながります。リビジョンが作成されるたびに、WordPress データベースwp_postテーブルにpost_typeの値がrevisionである新しい行が追加されるのです。

データベースが大きくなれば、それだけ多くのストレージスペースが無駄遣いされます。これはサイト速度の低下を引き起こし、ユーザーエクスペリエンス検索エンジン最適化(SEO)の面でも妨げになります。

そのため、WordPressのリビジョンを上手にコントロールする方法を学ぶことが重要です。リビジョンを完全に削除する、無効にする、制限する、リビジョンデータベースを最適化するなど、さまざまな方法があります。

WordPressのリビジョンはどこにあるのか

WordPressでリビジョンの設定を変更する方法の前に、まずリビジョンが「どこにあるか」を見てみましょう。投稿や固定ページの編集画面で、右側のメニューから「文書」タブをクリックします。

リビジョンが有効になっていて、変更が加えられていれば、「ステータスと公開状態」の項目にリビジョン数が表示されます。

WordPressのリビジョン機能
WordPressのリビジョン機能

これをクリックすると、「リビジョン」ページが表示され、保存されているすべての編集内容を確認したり、2種類のリビジョンを並べて比較したりできます。2つの列が表示され、左側には記事や固定ページの前のバージョンが、右側には変更後のバージョンが表示されます。

WordPressのリビジョンページ
WordPressのリビジョンページ

スライダーを使って、さまざまな時点での変化を確認(そして復元)できます。色分けが施され、コンテンツの追加は「プラスの記号と緑」で、コンテンツの削除は「マイナスの記号と赤」で表示されます。

既存のバージョンを維持し、変更を加えずに編集画面に戻りたい場合は、記事のタイトルまたは画面上部の「エディターへ移動」のいずれかをクリックするだけでOKです。

WordPress編集データを以前のバージョンに戻す方法

WordPressで行った変更を元に戻したい時には、リビジョンを使って、素早く簡単に以前の状態を復元できます。

デフォルトでは、WordPressは投稿や固定ページのリビジョンを時系列で表示します。しかし、画面上部の「2つのリビジョンを比較」にチェックを入れると、手動で選択することが可能になります。

WordPressのリビジョンを手動で選択して比較する
WordPressのリビジョンを手動で選択して比較する

比較したいバージョンを自由に選択できます。リビジョンの中身を比較し、「この自動保存を復元」をクリックして古いバージョンを復元します。

WordPressで古いリビジョンに戻す
WordPressで古いリビジョンに戻す

このボタンをクリックすると、比較しているバージョン(リビジョン画面の右側の列に表示されているバージョン)が復元されます。

WordPressのリビジョン機能を有効にする方法

通常、WordPress のリビジョン機能はデフォルトで有効になっています。しかし、お使いのサーバーやWordPressのインストール方法によっては、この機能が無効になっている場合があります。また、あなたやあなたのチームの誰かが、どこかでこの機能を無効にしている可能性もあります。

いずれにしても、WordPressでリビジョン機能を有効にしたい場合には、サイトのルートディレクトリにあるwp-config.phpファイルを手動で編集することができます。これには、Secure File Transfer Protocol(SFTP)クライアントが便利です。(Kinstaのお客様ではなく)例えば、cPanelが採用されている場合には、ファイルマネージャを使用できます。

対象のファイルを見つけて開いたら、次のコードを探します。

define('WP_POST_REVISIONS', false);

falseの値をtrueに変更します。

このようなコードが見つからない場合は、以下のコードを、“ABSPATH”“/* That's all, stop editing! Happy publishing. */”の箇所の前に貼り付けます。

define('WP_POST_REVISIONS', true);
WordPressのリビジョンを手動で有効にする
WordPressのリビジョンを手動で有効にする

その後は、ファイルの保存をお忘れなく。

これで、WordPressにログインし直すと、リビジョン機能が有効になっているはずです。任意の固定ページや投稿の編集画面を開き、「文書」タブの「リビジョン」を確認してみてください。

WordPressのリビジョン機能を無効にする方法

逆に、WordPressのリビジョン機能を完全に無効にしたいこともあるでしょう。ただし、この機能を有効にしたまま、リビジョンを制限したり削除したりして、データベースにおける容量の最小化を図ることもできます。その方法については、次のセクションでご紹介します。

しかし、この機能に目的や用途がない場合は、完全にオフにすることができます。そのためには、上で説明したのと同じ方法で、サイトの wp-config.phpファイルを編集します。唯一の違いは、値をtrueではなくfalseに設定することです。

wp-config.phpファイルを編集することに抵抗がある場合は、Disable Post Revisionなどの軽量プラグインを使って、WordPressのリビジョン機能を無効にすることもできます。このツールをインストールして有効化すると、「設定」>「投稿設定」から設定画面にアクセスできるようになります。

「Disable Post Revisions WordPress」プラグインの設定画面
「Disable Post Revisions WordPress」プラグインの設定画面

リビジョンを無効にしたい投稿タイプを選択して、変更を保存します。以上で設定は完了です。

WordPressのリビジョンデータベースを最適化する方法

サイトが古いほど、データベースに保存されているリビジョンの数も多くなるもの。何年もかけてコンテンツを公開・更新していれば、当然ながら多くのリビジョンが蓄積されていきます。

古いサイトであれば、昔に作成した(更新頻度の多い)ページのリビジョン数が100を超えることも珍しくありません。例えば、サイトに800の固定ページと記事があるとします。それぞれに100のリビジョンがあるとすると、データベースには80,000以上のエントリが存在することになります。これは、WooCommerceストアでもよくある問題です。

このような蓄積は、音も無く、そして着実に進行します。幸いなことに、完全に無効にする以外にも、WordPressのリビジョンを最適化する方法は存在します。以下をご覧ください。

  • WordPressのリビジョンを削除する
  • WordPressのリビジョンを制限する

以下のセクションでは、手動で、またはプラグインを使ってこれらの作業を実行する方法をご説明します。

新規サイト立ち上げであれば、既存のリビジョンを削除する必要はないため、次の「WordPressのリビジョン制限」へお進みください。開設してしばらく経つサイトである場合には、リビジョンを掃除し、未使用のものや古いものを削除してしまうのが得策です。

WordPressのリビジョンを削除する方法

リビジョンをサイトから削除するには、「手動」と「プラグイン」の2つの方法があり、プラグインの使用をお勧めします。プラグインを使用すると短時間で済み、サイトのファイルを変更する必要もありません。

しかし、高度な方法をお望みの開発者向けに、完全に手動でリビジョンを削除する方法もご紹介します。以下、両方の方法を見てみましょう。

プラグインを使ってWordPressのリビジョンを一括削除する方法

プラグインを使ってWordPressのリビジョンを削除するには、いくつかの選択肢があります。

WP-Sweepの使用をお勧めします。

プラグイン「WP-Sweep」
プラグイン「WP-Sweep」

WP-Sweepは、データベース内の古いリビジョンをすばやく簡単にまとめて削除できる、無料の使いやすいプラグインです。WP-Sweepをインストールするには、「プラグイン」>「新規追加」へ移動し、プラグインを検索して、「今すぐインストール」をクリックし、「有効化」を選択します。

WordPressプラグイン「WP-Sweep」の有効化
WordPressプラグイン「WP-Sweep」の有効化

次に、「ツール」>「Sweep(データ掃除)」に移動します。

WordPressでWP-Sweepの設定画面へ移動する
WordPressでWP-Sweepの設定画面へ移動する

この画面では、リビジョンの一覧と、その数が確認できます。「詳細」をクリックすると、対象の投稿一覧が表示されます。

WP-Sweepプラグインの操作画面
WP-Sweepプラグインの操作画面

重要なものが削除されないかなどを確認したら、「掃除」ボタンをクリックします。この作業をすべての項目で繰り返します。リビジョンの削除をしていく中で、ダイアログボックスに処理中のリビジョン数が表示されます。

プラグイン「WP-Sweep」を利用したWordPressのリビジョンの処理
プラグイン「WP-Sweep」を利用したWordPressのリビジョンの処理

パフォーマンスへの影響から、このプラグインで一度に表示される項目数は500までです。古いサイトであれば、(今回のデモではテストサイトを使用しているため)、これよりも多くのリビジョンが表示されることが予想されます。

一つ一つWordPressのリビジョンを削除する方法

WordPressのリビジョンを一つ一つ削除することもできます。方法は2つあります。(先とは別の)プラグインを一部に使用する方法と、データベースから直接エントリを削除する方法です。開発者としての知識があり、プラグインのインストールを避けたい場合を除き、1つ目の方法をお勧めします。

1つ目の方法では、無料の「Simple Revisions Delete」というプラグインをダウンロードして有効化します。このプラグインには、管理画面や設定画面はありません。投稿や固定ページに移動すると、各リビジョンの横に「削除」の文字が表示されます。

プラグイン「Simple Revisions Delete」を使用する
プラグイン「Simple Revisions Delete」を使用する

これで、不要なリビジョンを確認し、削除していくことができます。リビジョンを細かく管理したい人にうってつけの選択肢です。

2つ目の、より高度な方法をご希望であれば、phpMyAdminにアクセスしてSQLクエリを実行することもできます。ただし、このやり方には注意が必要です。WordPressリポジトリのフォーラムには、悪質なコードがたくさん出回っています。中には、サイトの重要な要素を損傷してしまうものも。サイトを完全に破壊してしまう危険性すらあります。

クエリを使ってWordPressのリビジョンを安全に削除するには、phpMyAdminアカウントにログインし、左側のパネルからWordPressのデータベースを選択して、「SQL」タブをクリックします。

phpMyAdminのSQLタブ
phpMyAdminのSQLタブ

続いて、WordPressのデータベース上で実行するコマンドを入力します。コマンドボックスに以下のように入力します。

DELETE FROM wp_posts WHERE post_type="revision";

wp_は、実際にWordPressデータベースのプレフィックスとして使用しているものに置き換える必要があります。そして、「実行」をクリックしてコマンドを実行します。これで、データベース内のリビジョンがすべて削除されます。

WordPressの開発者向けに、WP-CLIを使って投稿のリビジョンを削除する方法もあります。以下に、WP-CLIコマンドの例をご紹介します。

$ wp post delete $(wp post list --post_type='revision' --format=ids)

wp post deleteコマンドについては、WP-CLI のドキュメントで詳しく説明されています。

データベースから古いリビジョンを削除しても、それ以後の固定ページや投稿のリビジョン生成がストップするわけではありませんので、その点はお忘れ無く。したがって、保存するリビジョンの数を制限して、今後の肥大化を避けるのが賢明です。

WordPressでリビジョン数を制限する方法

WordPressのリビジョン数を制限することで、データベースのクリーンアップの頻度を最小限に抑えることができます。WordPressのリビジョンを削除する場合と同様に、手動で行う方法とプラグインを使用する方法があります。

プラグインを使ってWordPressのリビジョン数を制限する方法

プラグインを使用してWordPressのリビジョン数を制限する場合は、無料のプラグインWP Revisions Control がおすすめです。このプラグインは、WordPressのリビジョン数を制限したり、リビジョンを完全に無効にしたりすることができます。

サイトにインストールして有効化すると、管理者ダッシュボードの「設定」>「投稿設定」と進み、タブをクリックすることで、記事のリビジョン数を制限することができます。

WP Revisions Controlの設定
WP Revisions Controlの設定

次に、各投稿タイプのリビジョン数を設定します。カスタム投稿タイプがある場合は、この一覧に表示されます。

設定できるリビジョン数に上限はありません。逆に、0に設定すると、その投稿タイプのリビジョンが完全に無効になります。設定が完了したら、画面下の「変更を保存」をクリックすれば完了です。

プラグインを使わずにWordPressのリビジョン数を制限する方法

プラグインを使わずにWordPressのリビジョン数を制限するには、wp-config.phpファイルのコードを編集します。先に述べたように、お使いのサーバーによっては、cPanelとファイルマネージャ、またはSFTPクライアントを使って編集ができます。

wp-config.phpファイルを開いたら、以下のコード行を追加します。

define('WP_POST_REVISIONS', 3);

上の例では3を使用していますが、固定ページや投稿ごとにデータベースに保存したいリビジョン数に応じて、この数値を変更することができます。作業が終わったら、ファイルを保存し、サーバーに再アップロードしてください。

まとめ

WordPressのリビジョンは、せっかくの作業が失われることを防ぐ機能です。リビジョンがあれば、古いバージョンのページや記事を簡単に復元することができます。しかし、大規模なサイトや長く運営しているサイトでは、リビジョンがすぐに蓄積され、データベースに不必要な負荷がかかります。その結果、サイトのパフォーマンスが低下してしまうこともあります。

リビジョンの処理方法を調整しサイトに悪影響を与えないようにするには、さまざまな方法があります。その一例は次の通りです。

  1. サイトのwp-config.phpファイルを編集して、リビジョン機能を無効にする。
  2. Simple Revisions Deleteなどのプラグインを使って、個々のリビジョンを一つ一つ削除する。または、phpMyAdminやWP-CLIを使ってデータベースから直接編集するか、WP-Sweepなどのプラグインを使用してリビジョンを一括削除する。
  3. wp-config.phpファイルを編集するか、WP Revisions Controlなどの無料プラグインを使用してWordPressのリビジョン数を制限する。

WordPressサイトのパフォーマンスはデータベースにかかっています。今すぐ最適化を始めましょう。

WordPressのリビジョン機能とその最適化について、何かご質問がありますか?以下のコメント欄からお気軽にお聞かせください。

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.