
comment_text()とは?
comment_text()
は、WordPressのコメントテンプレートタグの一つです。このタグは、現在のコメントの本文(コメント内容)を表示するために使用します。
たとえば、WordPressでコメント一覧を出力する場合、各コメントに投稿者名や投稿日時、コメントの内容を表示したい場面があります。そのとき、コメントの本文部分を表示するのが comment_text()
の役割です。
comment_text()の基本的な使い方
コメントループ内で使います。たとえば、comments.php
テンプレートで次のように書くと、各コメントの本文が表示されます。
<?php
if ( have_comments() ) :
wp_list_comments( array(
'callback' => 'my_custom_comments'
) );
endif;
function my_custom_comments( $comment, $args, $depth ) {
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
<div class="comment-author vcard">
<?php echo get_avatar( $comment, 48 ); ?>
<?php printf( __( '<cite>%s</cite>' ), get_comment_author_link() ); ?>
</div>
<div class="comment-meta commentmetadata">
<?php printf( __( '%1$s at %2$s' ), get_comment_date(), get_comment_time() ); ?>
</div>
<div class="comment-content">
<?php comment_text(); ?>
</div>
</li>
<?php
}
?>
この例では comment_text()
によって、コメントの本文を <div class="comment-content">
内に表示しています。
comment_text()のパラメータ
comment_text()
は、3つまでのパラメータを受け取れます。
comment_text( string $comment_text = '', array $args = array(), int $comment_ID = 0 )
それぞれの意味は以下の通りです。
パラメータ | 説明 |
---|---|
$comment_text | コメントが空の場合に表示するテキスト。デフォルトは空文字。 |
$args | 表示オプションの配列。 before や after などを指定可能。 |
$comment_ID | コメントID(通常はループ内で自動取得されるので指定不要)。 |
$args
に指定できる主なオプション
before
: コメント本文の直前に出力するHTML文字列after
: コメント本文の直後に出力するHTML文字列
たとえば、コメント本文を <p>
タグで囲む場合は以下のように指定します。
comment_text( '', array(
'before' => '<p>',
'after' => '</p>'
) );
これにより、出力が
<p>コメントの本文がここに入る</p>
となります。
comment_text()のフィルターフック
comment_text()
が実際にテキストを出力する前に、フィルター が実行されます。これにより、開発者は出力内容を変更できます。
代表的なフィルターは以下です。
comment_text
コメント本文を出力する前に適用されるフィルター。
例:
add_filter( 'comment_text', 'my_comment_text_filter' );
function my_comment_text_filter( $text ) {
return $text . '<p><em>(ありがとうございます!)</em></p>';
}
この例では、すべてのコメント本文の後に「(ありがとうございます!)」というテキストが追加されます。
コメントの整形
WordPressのコメント本文は、データベースに格納されるときは生のテキストですが、表示の際には自動的にいくつかの処理が行われます。
主な処理:
wpautop()
による改行の<p>
タグへの置換make_clickable()
によるURLを自動リンク化balanceTags()
による不完全なタグの修正wptexturize()
による文字の整形(引用符の変換など)
これらは comment_text()
内部で呼ばれる get_comment_text()
で適用されます。
サニタイズ
コメント本文はHTMLタグが許可される場合もありますが、セキュリティのために wp_kses()
によって許可されるタグは制限されています。
デフォルトで許可されるタグは、管理画面の「コメント設定」で設定できますが、たとえば <a>
, <em>
, <strong>
などが一般的に許可されます。
comment_text()よくある使い方
comment_text()
は、wp_list_comments()
と組み合わせるのが最も一般的です。wp_list_comments()
のコールバック関数をカスタマイズすることで、HTMLを好きな形に整えられます。
また、独自のコメントループを作る場合も次のように have_comments()
と the_comment()
を組み合わせて利用します。
<?php if ( have_comments() ) : ?>
<ul class="comment-list">
<?php
while ( have_comments() ) : the_comment();
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
<?php comment_text(); ?>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
関連タグ
get_comment_text()
コメントの本文を取得するだけ(出力はしない)関数。comment_excerpt()
コメント本文の抜粋を表示。comment_author()
コメント投稿者の名前を表示。comment_date()
コメント投稿日を表示。
comment_text()
はコメント本文の表示に特化した関数であり、他の関数と組み合わせて全体のコメント情報を整えます。
comment_text()の注意点
- コメントが空の場合、
$comment_text
パラメータで指定したテキストが表示される。 comment_text()
の出力はすぐにHTMLに反映されるため、特別な処理を加えるときは事前にフィルターで加工するかget_comment_text()
を利用して取得後に処理するのがおすすめ。- セキュリティ上、コメント内容にはXSS対策が施されています。
comment_text()のまとめ
comment_text()
はWordPressでコメント本文を出力するための中心的なテンプレートタグです。
使い方はシンプルですが、$args
パラメータやフィルターを活用することで、柔軟な表示が可能です。特に、テーマをカスタマイズする際には「どうやってコメントを見せるか」が重要ですので、comment_text()
をベースにデザインや機能を調整していくとよいでしょう。