comment_form_title()

comment_form_title()
目次

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')); ?>

よく使うカスタマイズパターン

  1. comment_form() を使って一括管理
  2. title_replytitle_reply_to をオプションで指定
  3. cancel_reply_link を指定

例:

<?php
comment_form([
    'title_reply'       => 'コメントを残す',
    'title_reply_to'    => '%s さんへ返信',
    'cancel_reply_link' => '返信をキャンセル',
]);
?>

まとめ

comment_form_title() のポイント

  • コメントフォームの上部タイトルを出力する
  • 通常時と返信時でテキストを切り替えられる
  • %s に返信先のコメント投稿者名が入る
  • 最近は comment_form() に置き換わるケースが多い
  • HTMLを自由に制御したい場合は自作する方法もある
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次