コンテンツにスキップ

WordPress の投稿のリビジョンに回数制限を設定する方法

メインイメージ

WordPress の投稿リビジョンの保存件数に回数制限(上限)を設定する方法を説明します。

デフォルトの設定

WordPress のデフォルトの設定ではリビジョンの回数は無制限となっています 。 そのため、固定ページや投稿を何度も繰り返し編集していると、リビジョンデータによってデータベースのサイズが肥大化することがあります。

リビジョンの回数制限の設定方法

リビジョンの数を制限するためには設定ファイル wp-config.php の中で定数 WP_POST_REVISIONS をセットすれば OK です。

特定の回数にする

リビジョンの数を制限したい場合は WP_POST_REVISIONS に数値をセットします。

wp-config.php:

// 各投稿最大 5 回のリビジョンを保存する
define( 'WP_POST_REVISIONS', 5 ); 

リビジョンを無効にする

リビジョンを完全に無効にしたい場合は WP_POST_REVISIONS0 または false をセットします。

wp-config.php:

// リビジョンを無効にする
define( 'WP_POST_REVISIONS', 0 ); 

投稿タイプごとに異なる回数にする

WP_POST_REVISIONS を使った方法ではすべての投稿タイプに共通の設定を行うことになります。 投稿タイプによって異なる回数を設定したい場合はフィルタフック wp_revisions_to_keep を使います。

add_filter( 'wp_revisions_to_keep', function ( $num, $post ) {
  switch ( $post->post_type ) {
    case 'page':
      // 無制限:
      return -1;
    case 'post':
      // 5 つ:
      return 5;
    case 'custom_post_type':
      // 2 つ:
      return 2;
    default:
      return $num;
  }
}, 10, 2 );

リビジョンの削除方法

リビジョンの数を制限する代わりに、既存のリビジョンをまとめて削除することもできます。 いくつかの方法があります。

WP-CLI を使う方法

WordPress のコマンドラインツール WP-CLI を使う方法は次のとおりです。

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

wp post list は投稿の一覧を出力するコマンドです。 オプション --post_type='revision' --format=ids を使うと、リビジョンの id だけをスペース区切りで返すことができます。

wp post delete は複数の投稿を一括でゴミ箱に移動できるコマンドです。 引数に投稿の ID を受け付けます。 通常リビジョンはゴミ箱に入らないのでリビジョンに対して wp post delete は使えませんが、 --force をつけることでリビジョンも削除できます。 その場合、ゴミ箱を介さずにデータが物理削除されてしまうため一度削除したリビジョンデータは元に戻せません。

Note

このコマンドは少しでも間違うと重大なデータロスになる可能性があるため、コマンドの実行前には必ずサイト全体のバックアップを取ってから作業を行うようにしてください。

プラグインを使う方法

リビジョン削除機能を提供するプラグインを使う方法もあります。 そのようなプラグインはたくさんありますが、例えば次のプラグインなどが有名でよく使われています。

WP-Optimize

WP-Optimize

Advanced Database Cleaner

Advanced Database Cleaner

Advanced Database Cleaner – WordPress プラグイン | WordPress.org

WP-Sweep

WP-Sweep

WordPress.org ドキュメンテーション・リファレンス

関連ページ