投稿一覧へリビジョン数を表示する方法、リビジョン数を指定してそれ以上作られないようにする方法

公開日:/最終更新日: 2023(令和5)年11月25日

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています



WordPressでは、何等かの編集作業を行った後、今までのものとの差分が発生する場合に、「公開」「下書き保存」「更新」ボタンをクリックした段階で以前の状態を保存するリビジョンというデータが作成され、そのデータはデータベース内へ保存されるようになっています。

そしてリビジョンは、編集と更新を繰り返した数だけ無制限に生成され、知らず知らずの間にたくさん作られてデータベースの肥大化を招き、編集時に不具合が出たり、パフォーマンス低下を招くこともあります。

実際にリビジョン数の多いコンテンツを編集した際に保存されずエラーとなるケースがあると問い合わせをいただいたこともあります

確かにリビジョンを使うと以前の状態へ簡単に戻せるので、「助かった~」というケースもないことはないものの、通常はほとんど元に戻ることはないのではないでしょうか?

また、リビジョン数自体は、投稿編集画面を開かないと見えないため、生成されていることすら気づいていない方も多いのではないでしょうか?

そこで今回は、それぞれのリビジョン数を投稿や固定ページ一覧でパッと確認できるようにする方法と、生成させるリビジョン数の制限を行う方法を紹介します。

本ページで掲載しているコードは、以下に了承した上で使用ください

  • コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
  • コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
  • コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
  • コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
  • 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
  • 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)

リビジョン数を一覧へ表示させる方法

次項の「設定した数以上のリビジョンが作成されないようにする方法」の措置を行って、通常通り編集していけば、だんだんとデータベース内のリビジョンデータは減っていきますが、とにかくリビジョンのメンテナンスを優先して行いたいという場合には、各投稿の編集画面を1つ1つ開いてみる以外に、標準の状態で現在のリビジョン数を知ることはできません。

それだとリビジョン数の多いコンテンツを探すのがとても面倒なので、パッと見て分かるように投稿や固定ページの一覧へリビジョン数を表示する方法を紹介します。

この方法は、有効化しているテーマのfunctions.phpへコードを追記することで機能します。不慣れな方やトラブル時に対応が困難な方はご遠慮ください

有効化しているテーマのfunctions.phpへ以下のコードをコピーして保存してください。

/*** リビジョン数を投稿・固定ページ一覧へ表示 ***/
/* 一覧へカラムを作成 */
function sample_add_revisions_column($columns) {
	$columns['RevisionCount'] = __('リビジョン数','');

	return $columns;
}
add_filter( 'manage_posts_columns', 'sample_add_revisions_column');
add_filter( 'manage_pages_columns', 'sample_add_revisions_column' );

/* 一覧へリビジョン数を表示 */
function sample_revisions_data_column($column_name, $post_id) {

	if( $column_name == 'RevisionCount' ) {
		if ( get_the_date('Y-m-d H:i:s') === get_the_modified_date('Y-m-d H:i:s') ) {
			return '0';
		} else {
			global $wpdb;
			$query = "SELECT COUNT(ID) AS cnt FROM {$wpdb->posts} WHERE post_name = '{$post_id}-revision-v1';";
			$cnt = $wpdb->get_var($query);

			echo $cnt;
		}
	}
}
add_action( 'manage_posts_custom_column', 'sample_revisions_data_column', 10, 2 );
add_action( 'manage_pages_custom_column', 'sample_revisions_data_column', 10, 2 );

/* できるだけタイトル近くに表示 */
function sample_add_posts_revision_column( $columns ) {
	$new_columns 	= [];
	$check			= false;
  
	foreach ( $columns as $name => $display_name ) {
		if ( $display_name == '投稿者' ) {
			$new_columns['RevisionCount'] = 'リビジョン数';
			$check	= true;
		}

	$new_columns[$name] = $display_name;
	}
	
	if($check == false){
		$new_columns['RevisionCount'] = 'リビジョン数';
	}
	
	return $new_columns;
}
add_filter( 'manage_edit-post_columns', 'sample_add_posts_revision_column',999 );
add_filter( 'manage_edit-page_columns', 'sample_add_posts_revision_column',999 );

/* カラム幅の設定 */
function sample_revisions_admin_style_init(){
?>
<style>
body.edit-php #RevisionCount
{
	width: 5%;
}
td.RevisionCount.column-RevisionCount {
	text-align: right;
}
</style>
<?php
}
add_action('admin_enqueue_scripts','sample_revisions_admin_style_init');

終わったら、管理画面の投稿一覧や固定ページ一覧を表示してみると、タイトルの右辺りに「リビジョン数」という列が追加され、それぞれのリビジョン数が表示されていることを確認できます。

カスタム投稿タイプのリビジョン数を知りたい場合には自身でごにょごにょしてください

不要になったら、追加した上記のコードを削除するか、一覧右上の「表示オプション」を開いてチェックをはずせば表示されなくなります。

設定した数以上のリビジョンが作成されないようにする方法

数が表示されただけでは仕方がないので、続いて設定した数以上にリビジョンが生成されないようにする方法を紹介します。

一覧でリビジョンの多いものの編集画面を開き、冒頭で書いたようなリビジョンが生成されるような作業を行う(以下の例参照)と、設定したリビジョン数よりも古いリビジョンは削除され、その後の編集でも古い物から削除されるようになります。

リビジョン整理の手順例

本章で紹介する措置を施した後に行うリビジョンの整理は、何かの変更を行った後で更新などを行わない限り発動しませんので、編集するつもりではないけどリビジョンは整理したいという場合には、以下のようにして整理を行います。

  1. リビジョンの多い投稿や固定ページの編集画面を開く
  2. 段落ブロックなどを挿入して何かの文字を入れ、更新する
  3. 2で追加した段落ブロックなどを削除し、再度更新する

紹介する方法では、wp-config.phpというファイルへのコード追加が必要となります。不慣れな方やトラブル時に対応が困難な方はご遠慮ください

リビジョン数を制限する手順

FTPクライアントツールなどを使って、WordPressの収容されているサーバー内の場所を開き、「wp-config.php」を一旦ダウンロードします。

ダウンロードした「wp-config.php」を開き、「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」と書かれている行の上へ以下のコードを挿入して保存します。

define( 'WP_POST_REVISIONS' , 3 );

上記はリビジョン数を3件にする場合のコードです。1以上の値で任意の数字に変えることもできますし、「0」を指定して完全に無効にすることもできます(後者はおすすめしません)

同じ場所へ上書きアップロードします。

一度サイトの管理画面を閉じ、再度開いて動作に問題がないことを確認して終了です。

サーバーのファイルマネージャーで直接ファイルを開いて編集する場合には、文字コードや自動翻訳などの問題で正常に保存されず、トラブルとなることがあるのでご注意ください

あとは、リビジョン数の多いものに対して「リビジョン整理の手順例」のようにしていったり、通常通り編集していくことで、だんだんデータベースに大量にあったリビジョンのデータがきれいになっていきます。

, , , , , , , , , , , , , , ,



Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)
「Warning: Undefined array key “〇〇” in…」という警告が出る原因と対処