comment_ID()

comment_ID()
目次

comment_ID()の用途

comment_ID() は、現在処理中のコメントのID(数値)を出力するテンプレートタグです。

WordPressでは、各コメントに一意のID(comment_ID)が付与されています。
このIDをHTMLの要素に使うことで、コメントを識別したり、アンカーリンクで直接参照したりできます。

例えばコメントリストを表示する際、各コメントの<li>タグにIDを付けるのが一般的です。

comment_ID()の基本の使い方

最もシンプルな書き方はこれです。

<?php comment_ID(); ?>

これでコメントIDが数値で出力されます。

たとえば、そのコメントのIDが 57 であれば

57

が表示されます。

comment_ID()の出力例

コメントループ内で次のように記述します。

<li id="comment-<?php comment_ID(); ?>">

これにより、HTMLは以下のようになります。

<li id="comment-57">

このようにすることで、

  • 各コメントをユニークに識別
  • アンカーリンク(例: #comment-57)でコメントに直接飛ぶ

ことができます。

get_comment_ID() との違い

comment_ID() は値を「出力」する関数です。

「出力ではなく、IDを文字列として取得したい」場合は get_comment_ID() を使います。

例:

<?php
$id = get_comment_ID();
echo '<div data-comment-id="' . esc_attr($id) . '">';
?>

このように変数として扱うことができます。

comment_ID()のコメントループ内での利用

comment_ID()コメントループの中で使用することが前提です。

具体的には wp_list_comments() のコールバック関数や、while(have_comments()) ループの中で呼ぶ必要があります。

例: wp_list_comments() とカスタムコールバック

wp_list_comments([
    'callback' => 'my_comment_callback'
]);

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

ループ外で使うときの注意

ループ外で使う場合は $comment グローバル変数に適切にセットされていないと動きません。

この場合は明示的に get_comment_ID() にコメントオブジェクトを渡すか、ループ内で処理する必要があります。

comment_ID()の実用例

コメントのIDを利用する用途はさまざまです。

1. HTMLのid属性に付与

もっとも多いのがこれです。

<li id="comment-<?php comment_ID(); ?>">

ブラウザで次のように表示されます。

<li id="comment-123">

2. data属性に埋め込む

JavaScriptで操作する場合、data-comment-id属性を使うと便利です。

<div data-comment-id="<?php comment_ID(); ?>">

3. アンカーリンク

コメント一覧の上部にコメント数リンクを設置する例:

<a href="#comment-<?php comment_ID(); ?>">このコメントへ移動</a>

クリックすると該当コメントにスクロールします。

comment_ID()のよくある質問

comment_ID() はIDをエスケープする必要がある?

comment_ID()absint()で数値に変換しているため、基本的に安全です。
ただし属性値に入れる場合は esc_attr() で明示的にエスケープすると安心です。

例:

id="comment-<?php echo esc_attr(get_comment_ID()); ?>"
comment_ID()comment_ID( $comment_ID ) のように引数は指定できる?

comment_ID() には引数がありません。
特定のIDを取得したい場合は get_comment_ID() を使います。

関連する関数

コメントIDを扱う主な関数を整理します。

関数名内容
comment_ID()現在のコメントIDを出力する
get_comment_ID()現在のコメントIDを取得(出力しない)
comment_class()コメント要素にクラスを出力する
get_comment()コメントオブジェクトを取得する

カスタムコメント出力での使用例

以下はコメントループを自作する場合のサンプルコードです。

<?php if ( have_comments() ) : ?>
    <ul class="comment-list">
    <?php
    while ( have_comments() ) :
        the_comment();
    ?>
        <li id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
            <div class="comment-author"><?php comment_author_link(); ?></div>
            <div class="comment-meta"><?php comment_date(); ?> at <?php comment_time(); ?></div>
            <div class="comment-content"><?php comment_text(); ?></div>
        </li>
    <?php endwhile; ?>
    </ul>
<?php endif; ?>

comment_ID() のまとめ

comment_ID() のポイント

  • コメントID(数値)を出力する関数
  • コメントループ内で使用する
  • アンカーリンクやHTMLのid属性に活用する
  • 出力ではなく取得したい場合は get_comment_ID() を使う
  • 安全性のため esc_attr() を組み合わせるとベター
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次