comment_excerpt()

comment_excerpt()
目次

comment_excerpt()の概要

comment_excerpt() は、コメントの内容を抜粋として表示するテンプレートタグです。

通常、コメントを表示するときは comment_text() を使いますが、これはコメント全文を出力します。
一方、comment_excerpt() はコメントを短く要約(トリミング)し、最大で 20語(単語) までの抜粋を表示するために使われます。

たとえば、コメント一覧やウィジェットなどで「コメント全文は長すぎる」という場合に活躍する便利な関数です。

comment_excerpt()の基本的な使い方

最もシンプルな使い方は以下のとおりです。

<?php comment_excerpt(); ?>

これだけで、そのコメントの先頭から最大20単語までを抜粋として表示します。

例:
コメント内容が以下の場合

これは非常に長いコメントです。このコメントは抜粋を作るために用意されています。全文を表示するにはcomment_text()を使います。

抜粋はこのように出力されます(日本語では単語分割の処理が単純にスペースで分かれるので、実質的に全文が出ることもあります)。

comment_excerpt()のデフォルトの抜粋の長さ

comment_excerpt() のデフォルトの仕様として 最大20単語 に制限されます。

この上限は WordPress コアで固定されており、comment_excerpt()自体には直接パラメータで調整する機能はありません。

日本語の場合は「単語」という区切りではなく、コメントが20単語未満だと全文がそのまま出る場合があります。

comment_excerpt()の抜粋の末尾の「…」

デフォルトでは、抜粋がコメント全文より短くなった場合、末尾に [...] が自動で付きます。

たとえば英語の長いコメントなら

This is a very long comment prepared for the purpose of demonstrating how the comment_excerpt function works and how it limits the output to the first twenty words only. The rest of the comment will not be shown.

抜粋の出力例(先頭20単語):

This is a very long comment prepared for the purpose of demonstrating how the comment_excerpt function works and how it limits the output [...]

comment_excerpt()の出力を取得する

comment_excerpt()echo(画面出力)を行う関数です。

「抜粋の文字列を取得して変数に格納したい場合」は get_comment_excerpt() を使います。

使用例

<?php
$excerpt = get_comment_excerpt();
echo '<div class="comment-summary">' . esc_html($excerpt) . '</div>';
?>

このように取得した上で、自分でHTMLに挿入できます。

コメント抜粋の表示例

以下はコメント一覧のループの中での典型的な実装例です。

<ul class="comment-list">
<?php
$args = array(
    'style'      => 'ul',
    'short_ping' => true,
    'callback'   => 'my_comment_callback'
);
wp_list_comments($args);

function my_comment_callback($comment, $args, $depth) {
?>
    <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
        <div class="comment-author"><?php comment_author_link(); ?></div>
        <div class="comment-meta"><?php comment_date(); ?></div>
        <div class="comment-excerpt"><?php comment_excerpt(); ?></div>
    </li>
<?php
}
?>
</ul>

ここでは comment_excerpt() を使って本文の短い要約だけを表示し、デザインをシンプルにしています。

comment_excerpt()の注意点

  1. 単語単位で区切られる
    • 英語コメントはスペースで単語が分割されます。
    • 日本語はスペースがないため、実質全文表示になることも多いです。
  2. 抜粋の長さを変更する方法
    • comment_excerpt() には直接長さを変える引数がありません。
    • wp_trim_words() を使って、好きな文字数・単語数に調整するのがおすすめです。

抜粋の長さをカスタマイズする方法

wp_trim_words() を組み合わせると、任意の長さに切り詰められます。

使用例:先頭10単語だけ表示

<?php
$full_text = get_comment_text(null, array('format' => 'plain'));
$custom_excerpt = wp_trim_words($full_text, 10, '...');
echo esc_html($custom_excerpt);
?>

これで

  • 最大10単語
  • 末尾に「…」を付ける

など柔軟にカスタマイズできます。

get_comment_excerpt() の使い方

get_comment_excerpt() はコメント抜粋を返すだけで、画面に出力しません。

例:

<?php
$excerpt = get_comment_excerpt();
if ($excerpt) {
    echo '<p>' . esc_html($excerpt) . '</p>';
}
?>

HTMLを整形して好きに表示したい場合は、こちらを使います。

フックやフィルタ

comment_excerpt() の抜粋処理自体には専用のフィルタは用意されていません。

しかし、代わりに get_comment_text フィルタを使えば抜粋に影響を与えることもできます。

例:コメント表示前に不要な文字を除去する

add_filter('get_comment_text', function($comment_text){
    return str_replace('禁止語', '***', $comment_text);
});

この場合、抜粋にも適用されます。

comment_excerpt()のよくある質問

Q. コメント全文を表示する場合は?

A. comment_text() を使います。
comment_excerpt()はあくまで「短く抜粋する専用」です。

Q. 抜粋をHTMLタグ込みで出せる?

A. デフォルトではHTMLは取り除かれ、テキストのみになります。
HTMLを残したい場合は get_comment_text() + wp_trim_words() で自分で処理します。

例:

<?php
$text_with_html = get_comment_text();
$excerpt = wp_trim_words(strip_tags($text_with_html), 10, '...');
echo $excerpt;
?>

comment_excerpt()のまとめ

comment_excerpt() のポイント

  • コメントの先頭から最大20単語を抜粋して表示する
  • echo する関数(取得だけなら get_comment_excerpt())
  • 抜粋の長さは変更不可
  • より柔軟に抜粋を作る場合は wp_trim_words() を使う
  • 日本語コメントでは実質全文になることもある
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次