comment_id_fields()
は、WordPressのコメントフォームで投稿するコメントを識別するための 「hidden」フィールド(隠しフィールド)を自動的に出力するテンプレートタグ です。
機能の説明
comment_id_fields()
は、 comment_form()
内でコメントIDや投稿IDを保持するための隠しフィールド を出力します。これにより、WordPressはどの投稿やページに対してコメントが送信されているのか、また特定の返信コメントであるかを判別できるようになります。
通常は comment_form()
によって自動的に呼び出されますが、 独自のコメントフォームを作成する場合などに手動で追加 する必要があります。
シンプルなコード例
<?php comment_id_fields(); ?>
このコードは、投稿ID(comment_post_ID
)とコメントID(comment_parent
)を保持するための 隠しフィールド を出力します。
使い方の解説
comment_id_fields()
は、コメントフォームの中で hidden属性のフォームフィールド を生成し、WordPressが適切にコメントを処理するために使用されます。通常は comment_form()
によって自動的に含まれますが、独自のHTMLでコメントフォームを構築する場合に便利です。
<form action="<?php echo site_url('/wp-comments-post.php'); ?>" method="post">
<textarea name="comment" rows="4" required></textarea>
<?php comment_id_fields(); ?>
<input type="submit" value="コメントを送信">
</form>
- この例では、
<form>
タグ内にcomment_id_fields()
を使用し、WordPressが適切にコメントを処理できるようにしています。 wp-comments-post.php
にデータを送信することで、コメントの投稿が実行されます。comment_id_fields()
によって、コメントが どの投稿に紐づいているかを識別するためのID情報 が送信されます。
一緒に使うことが多い関連タグ
comment_form()
comment_form()
は、WordPressのコメントフォーム全体を出力するテンプレートタグです。comment_id_fields()
は comment_form()
の内部で自動的に呼び出されます。
<?php comment_form(); ?>
comment_form()
は、コメントフォーム全体を生成するための便利なテンプレートタグで、通常この中で comment_id_fields()
が使われています。自分でHTMLをカスタマイズする必要がない場合は、このタグで十分です。
get_comment_ID()
get_comment_ID()
は、現在のコメントの IDを取得する テンプレートタグです。
<li id="comment-<?php echo get_comment_ID(); ?>">
<?php echo get_comment_text(); ?>
</li>
get_comment_ID()
を使うことで、特定のコメントにユニークなIDを付与することができます。これは、CSSやJavaScriptで特定のコメントを操作したいときに有効です。
追加情報を取得したい場合
コメントフォームの隠しフィールドに加えて、ユーザーエージェント情報 や リファラ情報 など、コメント送信時に他の情報を取得することも可能です。
<form action="<?php echo site_url('/wp-comments-post.php'); ?>" method="post">
<textarea name="comment" rows="4" required></textarea>
<?php comment_id_fields(); ?>
<input type="hidden" name="user_agent" value="<?php echo $_SERVER['HTTP_USER_AGENT']; ?>">
<input type="hidden" name="referer" value="<?php echo wp_get_referer(); ?>">
<input type="submit" value="コメントを送信">
</form>
- 上記の例では、コメント送信時にユーザーエージェント情報とリファラ(どこからのアクセスか)を取得しています。
$_SERVER['HTTP_USER_AGENT']
で ユーザーのブラウザ情報、wp_get_referer()
で リファラ情報 が取得されます。
get_comment()
で取得できるコメント情報
<?php
$comment = get_comment(1); // IDが1のコメントを取得
echo $comment->comment_author; // コメント投稿者の名前を出力
?>
出力できる情報
- comment_author:コメントの投稿者名
- comment_author_email:投稿者のメールアドレス
- comment_content:コメントの内容
- comment_date:コメントの投稿日時
想定されるトラブル
comment_id_fields()
が正しく出力されない
コメントフォームが comment_form()
を使わずに独自実装されている可能性があります。
解決方法
手動でコメントフォームを実装する場合は、comment_id_fields()
を必ず含めましょう。
コメントの送信が正しく処理されない
wp-comments-post.php
に正しいデータが送信されていないか、comment_id_fields()
が抜けている可能性があります。
解決方法
フォームに comment_id_fields()
を追加し、投稿IDやコメントIDが正しく送信されていることを確認してください。
Q&A
まとめ
comment_id_fields()
は、WordPressのコメントフォーム内で 投稿IDとコメントIDを保持する隠しフィールド を生成するテンプレートタグです。
通常は comment_form()
によって自動的に出力されますが、独自フォームを実装する場合に手動で追加する必要があります。これにより、コメントが正しい投稿や返信に紐づけられ、適切に処理されます。
コメント