comment_reply_link()
は、WordPressの各コメントに対して 返信リンクを生成するテンプレートタグ です。このリンクをクリックすることで、ユーザーが特定のコメントに対して返信コメントを投稿できるフォームが表示されます。
機能の説明
comment_reply_link()
は、各コメントに「返信する」リンクを自動的に挿入し、コメントの 階層構造(スレッド型コメント) を実現します。このリンクをクリックすることで、対象のコメントに対する返信フォームが表示され、WordPressはそのコメントとの関連を適切に管理します。
シンプルなコード例
<?php comment_reply_link(); ?>
上記のコードで、コメントの下に「返信する」リンクが生成されます。返信先のコメントIDや投稿IDなどは自動的に処理されます。
使い方の解説
comment_reply_link()
は、通常 コメントループ(wp_list_comments()
)内で使用 されます。特定のコメントに対して返信リンクを表示し、クリック時にフォームを展開する仕組みが提供されます。comment_reply_link()
には、array
を引数に渡すことで ラベルやCSSクラス をカスタマイズすることもできます。
使用例
<?php
wp_list_comments(array(
'style' => 'ul',
'short_ping' => true,
'callback' => function($comment, $args, $depth) {
?>
<li id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
<div class="comment-body">
<?php echo get_comment_text(); ?>
<div class="reply-link">
<?php comment_reply_link(array(
'depth' => $depth,
'max_depth' => $args['max_depth'],
)); ?>
</div>
</div>
</li>
<?php
}
));
?>
wp_list_comments()
のコールバック関数内でcomment_reply_link()
を使用することで、各コメントの下に「返信する」リンクが生成されます。depth
とmax_depth
によって、スレッド型コメントの 階層の深さ を設定します。
一緒に使うことが多い関連タグ
wp_list_comments()
このタグは、コメント一覧をリストとして表示するために使います。comment_reply_link()
は通常このループの中で呼び出されます。
<?php
wp_list_comments(array(
'style' => 'ul',
'callback' => function($comment, $args, $depth) {
echo '<li>' . get_comment_text();
comment_reply_link(array('depth' => $depth, 'max_depth' => $args['max_depth']));
echo '</li>';
}
));
?>
wp_list_comments()
は、各コメントをリスト表示するための主要なテンプレートタグです。この中で comment_reply_link()
を使用することで、各コメントに対する返信リンクを表示できます。
get_comment_text()
このタグは、 コメントの内容 を取得して出力します。
<?php echo get_comment_text(); ?>
このタグで各コメントの本文を表示します。comment_reply_link()
と組み合わせることで、返信対象のコメントを明確にすることができます。
<ul>
<?php
wp_list_comments(array(
'style' => 'ul',
'callback' => function($comment, $args, $depth) {
?>
<li id="comment-<?php comment_ID(); ?>">
<div class="comment-content"><?php echo get_comment_text(); ?></div>
<div class="reply-link">
<?php comment_reply_link(array(
'reply_text' => 'このコメントに返信する',
'depth' => $depth,
'max_depth' => $args['max_depth'],
)); ?>
</div>
</li>
<?php
}
));
?>
</ul>
reply_text
でリンクのテキストをカスタマイズしています。- コメントの各要素(本文、ID、クラス)を自由に構成しながら返信リンクを表示しています。
追加情報を取得したい場合
返信コメントがどのようなIDに関連付けられているかを 取得して操作したい場合 は、get_comment()
などの関数を使います。
<?php
$comment = get_comment(10); // IDが10のコメントを取得
echo 'このコメントの投稿者は: ' . $comment->comment_author;
?>
get_comment()
で特定のコメントの詳細を取得し、必要に応じて 投稿者名やID を表示します。
出力できる情報
- comment_author:コメント投稿者の名前
- comment_author_email:コメント投稿者のメールアドレス
- comment_content:コメントの内容
- comment_date:コメントの投稿日時
- comment_post_ID:コメントが付いた投稿のID
想定されるトラブル
返信リンクが表示されない
コメントの 最大階層(max_depth)が制限されている 可能性があります。
解決方法
wp_list_comments()
の引数で max_depth
を確認し、必要に応じて階層を増やします。
返信リンクをクリックしてもフォームが表示されない
JavaScriptが正しく読み込まれていない可能性があります。
解決方法
使用しているテーマで comment-reply.js
が適切に読み込まれているか確認します。functions.php
で次のコードを追加して解決できます。
<?php if (is_singular()) wp_enqueue_script('comment-reply'); ?>
Q&A
まとめ
comment_reply_link()
は、WordPressで各コメントに対する 返信リンクを生成 するテンプレートタグです。
このリンクを使うことで、ユーザーは スレッド型コメントの階層構造 を利用でき、よりインタラクティブなコミュニケーションが可能になります。wp_list_comments()
や get_comment_text()
などの関連タグと組み合わせて使うのが一般的です。
コメント