【WordPress】リビジョン(履歴)保存回数を制限・無効化する方法|既存リビジョンの削除とバックアップ

WordPressのリビジョン機能は、記事の編集履歴を自動的に保存してくれる便利な機能ですが、既定では無制限に保存されるため、データベースの肥大化につながります。この記事では、今後の保存回数を制限・無効化する方法と、既にデータベースに溜まった過去のリビジョンを安全に削除する方法を解説します。

この記事でわかること

  • WP_POST_REVISIONS で保存回数を制限・無効化する方法
  • 設定変更だけでは既存のリビジョンは消えないという注意点
  • 既存リビジョンをバックアップを取ってから安全に削除する手順
スポンサーリンク

リビジョン機能とは?

リビジョン機能は、WordPressが記事の編集履歴を自動的に保存し、過去の状態に戻せるようにする機能です。この機能は非常に便利ですが、既定では無制限に保存されるため、データベースが大きくなりがちです。

リビジョンの保存回数を制限する方法

リビジョンの保存回数を制限するには、WordPressのルートディレクトリにある wp-config.php に以下のコードを追加します。

wp-config.php:保存回数を5回に制限
define( 'WP_POST_REVISIONS', 5 ); // 他の設定より上、'That's all, stop editing!' より前に追加

数値を変更すれば、任意の保存回数に調整できます。

リビジョンを完全に無効化する方法

リビジョン機能を完全に無効化することもできます。この場合、以降の編集履歴は一切保存されなくなります。

wp-config.php:リビジョンを完全に無効化
define( 'WP_POST_REVISIONS', false );
設定を変更しても、既存のリビジョンは自動で消えない
WP_POST_REVISIONS を制限・無効化しても、それはこれから作られるリビジョンに対する設定です。既にデータベースに保存されている過去のリビジョンはそのまま残ります。データベースを実際に軽くしたい場合は、次の手順で既存のリビジョンを別途削除する必要があります。

既存のリビジョンをデータベースから削除する

実行前に必ずデータベースのバックアップを取る
これから紹介するSQLは投稿データを直接削除する不可逆な操作です。実行前に必ずデータベースのフルバックアップを取得してください。万が一データが必要になった場合、バックアップが無いと復元できません。

バックアップを取ったら、phpMyAdminのSQLタブや wp db query(WP-CLI)などから以下のSQLを実行します。

SQL:リビジョンと孤立したメタデータを削除
-- リビジョンをすべて削除
DELETE FROM wp_posts WHERE post_type = 'revision';

-- 削除済みリビジョンに紐づいていた孤立メタデータも削除
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;
定期的なクリーンアップも検討する
記事数が多く編集頻度が高いサイトでは、リビジョンがGBオーダーまで膨らむこともあります。WP_POST_REVISIONSで今後の増加を抑えつつ、既存分は上記のSQLやデータベース最適化プラグインで定期的に整理するのがおすすめです。

関連するリビジョンの活用

カスタムフィールドの変更履歴もリビジョンで追跡したい場合はカスタムフィールドでリビジョンを有効化する方法と注意点を参照してください。

よくある質問(FAQ)

QWordPressのリビジョン保存回数を制限するには?
Awp-config.phpにdefine('WP_POST_REVISIONS', 5)のように保存回数の上限を定義します。falseまたは0を指定するとリビジョンが無効になります。既存のリビジョンはDBに残るため、削除は別途必要です。
Q既存のリビジョンをDBから削除するSQLは?
ADELETE FROM wp_posts WHERE post_type = 'revision';でリビジョンを全削除できます。合わせてDELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;で孤立したメタデータも削除します。実行前に必ずバックアップを取ってください
Qリビジョンが増えるとデータベースにどのくらい影響しますか?
Aリビジョンはwp_postsテーブルに保存され、記事数×リビジョン数の行が蓄積されます。大量の記事・頻繁な編集ではGBオーダーまで膨らむことがあります。wp_postmetaにも対応するメタデータが生成されるため、定期的なクリーンアップが推奨です。

まとめ

  • 今後の制限define('WP_POST_REVISIONS', 数値または false)
  • 注意:設定変更だけでは既存のリビジョンは消えない
  • 既存分の削除バックアップを取ってからSQLで一括削除

リビジョン機能は非常に便利ですが、データベースの肥大化を防ぐために今後の設定と既存データの整理の両方を意識して管理しましょう。