
comment_reply_link()とは?
comment_reply_link()
は、WordPressで**コメントに対する「返信リンク」**を出力するテンプレートタグです。
コメント欄に「返信する」というリンクを表示し、そのリンクをクリックすると対象コメントへの返信フォームが表示されます。
このタグはコメントを**階層(ツリー構造)**で表示する仕組みの一部で、テーマファイルのcomments.php
によく使われています。
comment_reply_link()の主な用途
次のような用途で利用されます。
- コメントへの返信を簡単に行えるようにする
- コメントのツリー表示を作る
- コメント同士のやり取りを視覚的に整理する
ブログやメディアサイトで訪問者同士のやり取りをわかりやすくするために便利です。
comment_reply_link()の基本的な使い方
最もシンプルな記述は以下の通りです。
<?php comment_reply_link(); ?>
この1行を、wp_list_comments()
でループしているコメント部分に書くだけで、現在のコメントに対する返信リンクが表示されます。
ただし利用には条件があります。
条件
- コメントループ内で呼び出す(
wp_list_comments()
やcomments_template()
の中) - コメント階層を有効にしている
comment_reply_link()のパラメータ
comment_reply_link()
は配列でオプションを渡すことで表示をカスタマイズできます。
以下は主なパラメータです。
add_below
返信フォームを表示するHTML要素のIDプレフィックスを指定します。
例: 'add_below' => 'comment'
の場合、comment-123
の直後に返信フォームが挿入されます。
depth
現在のコメントの深さを示します。wp_list_comments()
のコールバック関数に$depth
として渡される値をここに渡します。
max_depth
階層の最大深さを指定します。この深さに達すると返信リンクは表示されません。
reply_text
リンクに表示するテキストです。
例: 'reply_text' => '返信する'
login_text
ログインしていないユーザー向けに表示するテキストです。
例: 'login_text' => 'ログインして返信'
before / after
リンクの前後にHTMLを挿入できます。
例:
'before' => '<span class="reply-link">',
'after' => '</span>',
comment_reply_link()の使用例
wp_list_comments()
と組み合わせる例です。
wp_list_comments(array(
'style' => 'div',
'callback' => 'my_custom_comment'
));
function my_custom_comment($comment, $args, $depth) {
?>
<div id="comment-<?php comment_ID(); ?>">
<p><?php comment_text(); ?></p>
<div class="reply">
<?php
comment_reply_link(array_merge($args, array(
'reply_text' => 'このコメントに返信する',
'depth' => $depth,
'max_depth' => $args['max_depth']
)));
?>
</div>
</div>
<?php
}
この例ではreply_text
で表示文言を変更しています。
comment_reply_link()のカスタマイズのポイント
表示テキストの日本語化reply_text
やlogin_text
を日本語にすることで、訪問者にわかりやすい表示ができます。
例
'reply_text' => 'このコメントに返信',
'login_text' => 'ログインして返信する',
リンクの装飾before
やafter
でHTMLをラップし、CSSでデザインを調整できます。
階層の制限max_depth
で階層の深さを制限し、それ以上深い階層では返信できないようにできます。
comment_reply_link()の注意点
comment_reply_link()
を利用するためには、WordPress管理画面「設定 > ディスカッション」で
「スレッド (入れ子) 形式でのコメントを有効にする」にチェックを入れてください。
JavaScriptファイルcomment-reply.js
が正しく読み込まれていないと返信フォームが動きません。
テーマのfooter.php
に<?php wp_footer(); ?>
があるか確認してください。
comment_reply_link()のトラブル例
返信リンクが表示されない
→ 階層がmax_depth
に達している、あるいはdepth
の値の指定が正しくない場合があります。
返信フォームが表示されない
→ comment-reply.js
が読み込まれていないことが原因です。
comment_reply_link()のまとめ
comment_reply_link()
はWordPressのコメント返信機能を支える重要なテンプレートタグです。
利用のポイント
wp_list_comments()
のループ内で使うreply_text
やlogin_text
で文言をカスタマイズするdepth
やmax_depth
で階層を管理するcomment-reply.js
を読み込む
このタグを正しく使うことで、訪問者同士が簡単にコミュニケーションできるコメント機能を実現できます。