コンテンツにスキップ

WordPress のリビジョンシステムまとめ

メインイメージ

WordPress のリビジョンシステムについて説明します。

リビジョンシステムとは?

リビジョンシステムとは固定ページや投稿の過去の履歴(「リビジョン」)を残しておける機能のことです。 固定ページや投稿を更新すると更新時の内容が自動的に保存されます。

WordPress ではリビジョンの機能がデフォルトで有効になっているため、リビジョンを使うのに特別な設定やプラグインのインストールは必要ありません。

ちなみに、リビジョンシステムは CMS によく求められる定番機能のひとつです。 他の CMS でもリビジョンシステムをデフォルトで備えているものがよくあります。

リビジョンシステムのメリット

リビジョンシステムのおかげで WordPress では以下のようなことが可能です。

  • 投稿を間違って更新してしまったときに元に戻す
  • 「イベントのお知らせ」などで一時的な情報を掲載した後に元に戻す
  • (投稿を非掲載で残しておけば) 1 年前など過去の情報を確認する
  • 誰が・いつ・どのように投稿を作成・更新したかを後から確認する

編集時に何かミスをしてもすぐに元に戻せるので、コンテンツライター・編集者が安心して作業をできるのも大きなポイントです。

リビジョンシステムの制約・デメリット

WordPress のリビジョンシステムの制約として次のようなものがあります。

  • 削除してゴミ箱から消えてしまった投稿は元に戻せない
  • メディアファイルは対象外
  • カスタムフィールドはデフォルトでは対象外

また、デメリットとして次のようなものがあります。

  • デフォルト設定では無制限にリビジョンが溜まるので、投稿の数や更新頻度が多いサイトではデータベースが肥大化する
  • データベースの肥大化によりストレージのコストが上がる
  • データベースの肥大化によりパフォーマンスが落ちる

リビジョンの確認方法

固定ページや投稿を一度でも更新すると、編集画面右側の設定エリアにリビジョンの存在を示すテキストが表示されます。

リビジョン (5)

ここをクリックすると編集中の投稿のリビジョン確認画面が開きます。

revision.php

確認画面では誰が・いつ・どのような変更を行ったかを直感的なスライダー操作で確認できるようになっています。

リビジョンデータの保存場所

リビジョンはデータベースの wp_posts テーブルに格納されます。 post_typerevision です。

リビジョンの種類

厳密にいうとリビジョンには次の 2 種類があります。

  1. 通常のリビジョン
  2. 自動保存リビジョン

「通常のリビジョン」の方は投稿の編集画面で「更新」ボタンをクリックしたときに作成されます。

「自動保存リビジョン」の方は投稿の編集画面を開いているときにユーザーが何も作業をしなくても一定間隔で(デフォルトでは 60 秒ごとに)自動的に作成されるものです。 これにより編集中にブラウザウィンドウが閉じてしまった場合やネットワーク接続が切れてしまった場合などに途中までの変更を復元することができます。 「自動保存リビジョン」は 1 ユーザー 1 投稿につき最大 1 件だけ保存されるようになっています。

通常「リビジョン」と言えば前者の「通常のリビジョン」の方を指します。 自動保存のリビジョンは管理画面上では「自動保存」という呼び方で呼ばれます。

以下のバージョンよりも新しい自動保存された投稿があります。

リビジョンに含まれるデータ

リビジョンに含まれるデータは wp_posts テーブルに格納されるデータです。 具体的には次のとおりとなります。

  • タイトル・投稿日・更新日・著者・抜粋・本文・ステータスなど → 含まれる
  • カスタムフィールド → デフォルトでは含まれない

カスタムフィールドのリビジョンサポートはデフォルトでは含まれませんが、 WordPress 6.4 以降で有効にもできるようになりました。

参考: Framework for storing revisions of Post Meta in 6.4 – Make WordPress Core

リビジョンの上限数を設定する方法

WordPress では、デフォルトで無制限にリビジョンが保存されますが、数に上限を設定することも可能です。

設定ファイル wp-config.php に次の行を追加すると「通常のリビジョン」の最大件数が 5 件になります。

define( 'WP_POST_REVISIONS', 5 );

リビジョンがすでに 5 つある投稿を更新したときには最も古いリビジョンが削除されます。

WP_POST_REVISIONS の値とリビジョンの制御は次のようになっています。

WP_POST_REVISIONS の値 リビジョンの制御
true (デフォルト)か -1 すべてのリビジョンを保存する(上限なし)
false0 リビジョンを保存しない
N1 以上の整数) 1 投稿あたり最大 N 件リビジョンを保存する

ここには「自動保存リビジョン」は含まれません。

リビジョンのデータによって wp_posts テーブルのサイズが肥大化している場合やそれによりサイトのパフォーマンスが低下している場合はリビジョンの上限数の設定を検討するとよいでしょう。

リビジョン機能を無効化する方法

一般に推奨はされませんが、上述の設定用の定数 WP_POST_REVISIONS の値を false または 0 にセットすれば、新規のリビジョンの作成を停止するだけでなくリビジョン機能そのものを無効化できます。

設定ファイル wp-config.php に次の行を追加します。

define( 'WP_POST_REVISIONS', false );

こうすると、投稿の編集画面右側の設定エリアのリビジョンの表示がなくなります。 また、投稿のリビジョン確認画面も利用できなくなります。 ただし、「自動保存リビジョン」はこの設定の対象外となっており、有効なままです。

リビジョン機能を無効にしてしまうと投稿を変更点を確認したり前の状態に戻したりできなくなるため、リビジョンの設定を変更したくなったときは完全に無効化してしまうのではなくリビジョンの数に上限を設ける形にすることをまずは検討するとよいと思います。

リビジョンの注意点

上でも述べましたが、 WordPress のリビジョンシステムにはいくつかの制約があります。 例えば、削除してゴミ箱から消えた投稿を復元したりメディアファイルをリビジョン管理したりすることはできません。

リビジョンシステムはデータの完全なバックアップを提供するものではないので、あらゆるデータを復元できるものではありません。 サイト全体の定期的なバックアップは別途必ず行うようにしてください。

公式ドキュメンテーション