
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()の注意点
- 単語単位で区切られる
- 英語コメントはスペースで単語が分割されます。
- 日本語はスペースがないため、実質全文表示になることも多いです。
- 抜粋の長さを変更する方法
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() を使う
- 日本語コメントでは実質全文になることもある