【WordPress】コメント一覧のclassを変更・削除する例|ユーザー名の削除など

WordPressのコメント一覧のHTMLでは、コメント毎の要素にcomment_class関数でclassの属性値が複数与えられます。

今回は、そのclassの属性値を変更しカスタマイズする例となります。

【WordPress】コメント毎のclassを変更する例|comment_class

comment_class関数でコメント毎に与えられるclassの属性値は、フィルターフックcomment_classで変更できます。

フィルターフックcomment_classでは、コールバック関数の引数に、classの属性値が配列で渡されるので、その配列を変更することで、classの属性値を変更できます。

以下、そのclassの属性値を変更する2種類の例となります。

ユーザー名を削除する例

記事に対して自身がコメントを返信すると、そのコメントの要素に与えられるclass属性値のひとつに、以下の属性値があります。

comment-author-ユーザー名

上記、属性値の「ユーザー名」の箇所には、自身のユーザー名が表示され、外部からユーザー名が確認できてしまいます。

以下は、その属性値からユーザー名の箇所を削除し、'comment-author'とする例となり、functions.phpファイルに記述します。

function my_comment_class( $classes ){
	foreach( $classes as $key => $class ){
      // strstr関数で第1引数の文字列から、第2引数の文字列を検索
	  if( strstr( $class, 'comment-author-' ) ){
		$classes[$key] = 'comment-author';
	  }
	}
	return $classes;
}
add_filter( 'comment_class' , 'my_comment_class' );

上記例では、配列$classesに格納されているclassの属性値をループで取得し、属性値内に、'comment-author-'の文字列がある場合、配列の要素を上書きしclassの属性値を'comment-author'に変更しています。

classの属性値を1つにする例

デフォルトでは、コメントの要素にclassの属性値は複数与えられますが、属性値をシンプルにしたい場合もあると思います。

以下は、「記事投稿者のコメント」の属性値を'byuser'とし、「それ以外のコメント」の属性値を'guest'とし、それぞれ属性値を1つのみにする例となり、functions.phpファイルに記述します。

function my_comment_class( $classes ){
	// 配列を空にします
	$classes = [];
    // 「現在のコメントの投稿者」と「記事投稿者」が同じかを判断
	if( get_comment_author() == get_the_author() ){
		$classes[] = 'byuser';
	}else{
		$classes[] = 'guest';
	}
	return $classes;
}
add_filter( 'comment_class' , 'my_comment_class' );

上記例では、まず、配列$classesに格納されているデフォルトのclassの属性値をすべて空にします。

次に、「現在のコメントの投稿者」と「記事投稿者」が同じかを判断し、記事投稿者のコメントとそれ以外のコメントで、引数$classesにセットする値を変更しています。

コメント一覧内のHTMLをカスタマイズしたい場合

上記、フィルターフックcomment_class以外で、コメント一覧内のHTMLをカスタマイズしたい場合は、以下のリンク先を参考にしてみてください。

参考サイト、参考書籍

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はコチラから。