
comment_form_title()の用途
comment_form_title()
は、コメントフォームの上に表示する「コメント投稿のタイトル」を出力するテンプレートタグです。
この関数を使うと、コメントを新規投稿するとき・返信するときでタイトルを自動的に切り替えて表示できます。
多くのテーマでは、コメントフォームの上に「コメントを残す」や「◯◯さんへの返信」などの見出しを表示しています。comment_form_title()
はこれを自動的に出力し、返信時にはコメントの投稿者名を差し込むことができます。
comment_form_title()の基本の使い方
シンプルに書くとこうなります。
<?php comment_form_title(); ?>
この場合、デフォルトのテキストが表示されます。
- 通常コメント:
Leave a Reply
- 返信時:
Leave a Reply to %s
(%s は返信先のコメント投稿者の名前)
ただし、ほとんどのテーマでは引数を指定して日本語化や文言を変更することが多いです。
comment_form_title()のパラメータ
comment_form_title()
は最大2つの文字列を指定できます。
comment_form_title( string $no_reply_text = 'Leave a Reply', string $reply_text = 'Leave a Reply to %s' )
引数名 | 内容 |
---|---|
$no_reply_text | 通常のコメントフォームのタイトル |
$reply_text | 返信時のタイトル(%s に親コメントの著者名が入る) |
comment_form_title()の使用例
例1:日本語で設定
<?php comment_form_title('コメントをどうぞ', '%s さんへの返信'); ?>
新規コメントフォームでは
コメントをどうぞ
と表示され、
返信フォームでは
山田太郎 さんへの返信
のように親コメントの投稿者名が表示されます。
例2:英語でカスタム
<?php comment_form_title('Share your thoughts', 'Replying to %s'); ?>
よく使う組み合わせ
comment_form_title()
は単体ではタイトルだけを出力します。
コメントキャンセルリンク(返信フォームを閉じるリンク)とセットで使うと便利です。
例:タイトルと「キャンセル」リンクを一緒に表示
<h3>
<?php comment_form_title('コメントをどうぞ', '%s さんへの返信'); ?>
<?php cancel_comment_reply_link('キャンセル'); ?>
</h3>
cancel_comment_reply_link()
は返信時だけ「キャンセル」リンクを表示します。- 通常コメントでは何も表示されません。
HTMLを含める場合
comment_form_title()
はテキストのみを扱うため、HTMLタグを直接含めることは推奨されていません。
ただし、printf()
と get_comment_author()
を使えば細かい制御ができます。
自分でタイトルを組み立てる例
<?php if (get_comment_ID()) : ?>
<h3><?php printf('%s さんへの返信', get_comment_author()); ?></h3>
<?php else : ?>
<h3>コメントをどうぞ</h3>
<?php endif; ?>
返信対象の取得ロジック
comment_form_title()
の内部では、返信先コメントがあるかどうかをグローバル変数 $comment
や $comment_ID
から判定します。
具体的には、テーマ側で comment_reply_link()
などが呼ばれて replytocom
パラメータがURLに付くと、
WordPressは返信先コメントIDを把握します。
使用される場面
古いテーマではcomments.php
テンプレートの中に手動で次のように記述されていました。
<div id="respond">
<h3><?php comment_form_title(); ?></h3>
<form ...>
<!-- フォーム要素 -->
</form>
</div>
最近のテーマは comment_form()
でフォームを一括出力するため、comment_form_title()
を直接書くことは減っています。
comment_form() との関係
comment_form()
は WordPress 3.0以降に登場したコメントフォーム一括生成関数です。
<?php comment_form(); ?>
この comment_form()
を使うと、タイトルのテキストも $args
で指定できます。
<?php
comment_form([
'title_reply' => 'コメントをどうぞ',
'title_reply_to' => '%s さんへの返信',
'cancel_reply_link' => 'キャンセル',
]);
?>
この場合、comment_form_title()
を別途書く必要はありません。
comment_form_title()の注意点
1. 重複表示に注意
comment_form()
とcomment_form_title()
を両方書くとタイトルが二重に表示されます。comment_form()
を使う場合はcomment_form_title()
は不要です。
2. カスタムHTMLタグに含める場合
- タイトル部分にHTMLタグを含めたいときは、
comment_form()
のformat
パラメータを'xhtml'
などに設定するか、自作HTMLで対応します。
よくある質問
- 投稿者名にリンクを付けたい
-
comment_form_title()
では投稿者名をリンク化できません。
代わりにget_comment_author()
を組み合わせて自作します。 - 翻訳ファイルを使うべき?
-
はい。テーマを多言語対応したい場合は
__()
や_e()
を使います。<?php comment_form_title(__('コメントをどうぞ', 'text-domain'), __('%s さんへの返信', 'text-domain')); ?>
よく使うカスタマイズパターン
comment_form()
を使って一括管理title_reply
とtitle_reply_to
をオプションで指定cancel_reply_link
を指定
例:
<?php
comment_form([
'title_reply' => 'コメントを残す',
'title_reply_to' => '%s さんへ返信',
'cancel_reply_link' => '返信をキャンセル',
]);
?>
まとめ
comment_form_title() のポイント
- コメントフォームの上部タイトルを出力する
- 通常時と返信時でテキストを切り替えられる
%s
に返信先のコメント投稿者名が入る- 最近は
comment_form()
に置き換わるケースが多い - HTMLを自由に制御したい場合は自作する方法もある