
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()
を組み合わせるとベター