MENU

comment_reply_link()

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() を使用することで、各コメントの下に「返信する」リンクが生成されます。
  • depthmax_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() の引数に reply_text を渡すことで変更できます。

<?php comment_reply_link(array('reply_text' => '返信はこちら')); ?>

返信フォームが表示されない場合の原因は?

JavaScriptのロードが原因である可能性が高いです。comment-reply.js を正しく読み込んでいるか確認しましょう。

返信リンクをCSSでスタイルするには?

comment_reply_link() で生成されるリンクにはデフォルトで comment-reply-link というクラスが付与されます。このクラスを使ってスタイルを適用できます。

.comment-reply-link {
    color: #0073aa;
    text-decoration: none;
}
.comment-reply-link:hover {
    text-decoration: underline;
}

まとめ

comment_reply_link() は、WordPressで各コメントに対する 返信リンクを生成 するテンプレートタグです。

このリンクを使うことで、ユーザーは スレッド型コメントの階層構造 を利用でき、よりインタラクティブなコミュニケーションが可能になります。wp_list_comments()get_comment_text() などの関連タグと組み合わせて使うのが一般的です。

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

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次