【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をカスタマイズしたい場合は、以下のリンク先を参考にしてみてください。