MENU

comment_id_fields()

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() を省略しても問題ありませんか?

通常は comment_form() によって自動的に呼び出されるため省略できますが、独自フォームを使用する場合は手動で追加する必要があります。

comment_id_fields() でどのようなデータが送信されますか?

comment_post_ID(投稿ID)と comment_parent(返信元のコメントID)が送信されます。

コメントがどの投稿に紐づいているか確認するにはどうすればよいですか?

get_comment() 関数でコメントIDから詳細情報を取得し、comment_post_ID を確認できます。

まとめ

comment_id_fields() は、WordPressのコメントフォーム内で 投稿IDとコメントIDを保持する隠しフィールド を生成するテンプレートタグです。

通常は comment_form() によって自動的に出力されますが、独自フォームを実装する場合に手動で追加する必要があります。これにより、コメントが正しい投稿や返信に紐づけられ、適切に処理されます。

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

コメント

コメントする

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

目次