WordPressのコメント機能。

以下のように動作するようになっています。

  1. 「設定」→「ディスカッション」で、「新しい投稿へのコメントを許可」を有効にすると、以降新規投稿(固定ページ)作成時に自動でコメントが許可される
  2. 個別の投稿(固定ページ)編集画面のディスカッション欄で、「コメントを許可」のチェックを入れれば許可、外せばコメントは受け付けないようにできる

つまり、編集画面で許可するかどうか(上記の2)がキモで、サイト全体のディスカッション設定(上記の1)は、新規投稿作成時に自動で「コメントを許可」のチェックを入れるというものです。

冒頭から余談でしたが、これをあまり知らない人は多くて、結構、「全体のディスカッション設定で「新しい投稿へのコメントを許可」のチェックを外したのに、コメントできるようになっている」と言う方がいます。

従って、一度全体で許可(自動で許可にチェックが入る)ようにして作成した投稿や固定ページはすべてコメントを受け付けるようになっていて、コメントが許可されているかどうかは、個別の編集画面を確認するか、クイック編集で確認するしかありません。

また、クイック編集で、一括編集をすると、最終更新日が変わってしまったりして不都合な場合もあるでしょう(コメントの許可拒否を一括編集した時に更新日がどうなるのかは確認していません..)。

そこで役に立つのが、今回紹介する、投稿や固定ページ一覧へ、その投稿(固定ページ)のコメントが許可されているかを示す列を追加するカスタマイズです。

実装すると下図の赤枠のようにコメントの状態を表示できるようになり、クイック編集から許可・拒否の変更をすることでメンテナンス性がアップすると思います。

管理画面の投稿一覧にコメントが許可されているかどうかを表示する方法|Twenty Twenty-Two (TT2)のカスタマイズ情報

クイック編集で最終更新日が変更されるのを避けたい方は、後述する「クイック編集で最終更新日を変更しないようにするコード」を同時に導入してください。

それほど大変なコードでもありませんから、地味に便利なので導入してみては?

本ページのカスタマイズでは、有効化しているテーマのfunctions.phpを編集します。編集が不安な方や慣れていない方、トラブル発生時の対応ができない方は見送った方が無難です

管理画面の投稿一覧にコメントが許可されているかどうかを表示するカスタマイズ

まずは実現するコードを紹介して、後からちょっと解説します。

以下のコードを有効化しているテーマのfunctions.phpへ追加すれば、投稿と固定ページの一覧上にコメントの許可/拒否が表示されるようになります。

/* コメントが有効かどうかを判断 */
if ( !function_exists( 'is_comment_open' ) ){
function is_comment_open(){
  global $post;
  if ( isset($post->comment_status) ) {
    return $post->comment_status == 'open';
  }
  return false;
}
}

/* 投稿一覧のカラム作成 */
if ( !function_exists( 'sample_is_comment_column_register' ) ){
function sample_is_comment_column_register( $columns ) {
	$columns['Comopem'] =__('コメントの状態','');
	return $columns;
}
}
add_filter( 'manage_posts_columns', 'sample_is_comment_column_register',5 );

/* 固定ページ一覧のカラム作成 */
if ( !function_exists( 'sample_is_comment_page_column_register' ) ){
function sample_is_comment_page_column_register( $columns ) {
	$columns['Comopem'] =__('コメントの状態','');
	return $columns;
}
}
add_filter( 'manage_pages_columns', 'sample_is_comment_page_column_register' ,5);

/* 更新日の出力 */
if ( !function_exists( 'sample_is_comment_column_display' ) ){
function sample_is_comment_column_display( $column_name, $post_id ) {
	$message_open = __('許可','');
	$message_close = __('拒否','');
	
	switch ( $column_name ) {
	case 'Comopem':
		global $post;
		if(is_comment_open()){
			echo '<p class="com-open" style="background:#04ab04;color:#fff;text-align:center;font-weight:700;padding: 2px;border-radius: 4px;">';
			echo '<em>'.$message_open.'</em>';
		break; // end all case breaks
		}else{
			echo '<p class="com-close" style="color:#999;text-align:center;">';
			echo '<em>'.$message_close.'</em>';
		break; // end all case breaks
		}
	}
}
}
add_action( 'manage_posts_custom_column', 'sample_is_comment_column_display', 5, 2 );
add_action( 'manage_pages_custom_column', 'sample_is_comment_column_display', 5, 2 );

コード解説

上記コードで処理こどにコメントを入れていますので、それに従って補足解説します。

コメントが有効かどうかを判断

コメントが許可されているかどうかを判断するためのユーザー定義関数「is_comment_open」を作成しています。

何かの判断(条件分岐)で「is_comment_open()」を使うことで、コメントが許可されていれば..という条件を加えることができます。

このコードについては「WordPress投稿ページの「コメントの許可」状態を取得する方法」のコードをそのまま使湧ていただきました。

投稿一覧のカラム作成、固定ページのカラム作成

投稿一覧、固定ページ一覧で、コメントの状態を表示するための列を作成しています。

これらの一覧へ別の列を追加する場合は、コードを参考にユーザー定義関数名と、列を示す変数(上記コードの場合はComopem)を変更すればいくらでも流用できます

更新日の出力

列の中で、投稿や固定ページごとに情報を引き出して表示する内容を記述しています。

ここで先ほどの「is_comment_open()」を使って、コメントが許可されていれば「許可」、許可されていなければ「拒否」と一覧上に表示されます。

クイック編集で最終更新日を変更しないようにするコード

以下をテーマのfunctions.phpへ追加することで、クイック編集で更新した場合でも、最終更新日が変更されないようになります。

個別のクイック編集のみに対応しており、一括編集では効果がありませんのでご注意ください

/***** クイック編集で更新日を変更しない *****/
if ( !function_exists( 'sample_no_change_moddate_quick' ) ){
function sample_no_change_moddate_quick( $data, $postarr ){
	if ( isset( $_POST['action'] ) && $_POST['action'] == 'inline-save' ) {
		if ( $data['post_status'] == 'publish' ) {
			unset( $data['post_date'] );
			unset( $data['post_date_gmt'] );
			unset( $data['post_modified'] );
			unset( $data['post_modified_gmt'] );
		}
	}
	return $data;
}
}

add_filter( 'wp_insert_post_data', 'sample_no_change_moddate_quick', 10, 2 );

このページで紹介している機能は、いずれも以下のページで配布している自作プラグイン【HimaArt Utilitiy】の機能の一部として実装しています。