comment_text()

comment_text()
目次

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表示オプションの配列。 beforeafter などを指定可能。
$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() をベースにデザインや機能を調整していくとよいでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次