comments_link()

comments_link()
目次

comments_link()とは?

comments_link() は、記事のコメント一覧ページへのURLを生成し、そのリンクを出力するテンプレートタグです。

たとえば、ブログのトップページやアーカイブページで、各投稿の「コメントを読む」「コメントを書く」といったリンクを設置したいときに使います。

この関数は投稿単位でリンクを生成し、その投稿のコメントテンプレートへ移動できるアンカー付きURL(通常は#comments)を作ります。

comments_link()の基本的な書式

comments_link( string $zero = false, string $one = false, string $more = false, string $css_class = '' )

4つのパラメータを指定できます。

パラメータ説明
$zeroコメントがゼロ件のときの表示テキスト
$oneコメントが1件のときの表示テキスト
$moreコメントが2件以上のときの表示テキスト
$css_class<a>タグに付与するCSSクラス

これらを指定することで、コメント数に応じたテキストの出し分けができます。

comments_link()の最もシンプルな使い方

パラメータを省略して呼ぶと、WordPressがデフォルトテキストを自動的に用意します。

<?php comments_link(); ?>

この場合、コメント数に応じて以下のような表示になります。

  • 0件 →「Leave a comment」
  • 1件 →「1 Comment»
  • 複数 →「X Comments»

※テーマによって翻訳が異なる場合があります。

表示テキストを日本語化する

パラメータを指定して、表示を日本語にする例です。

<?php comments_link(
    'コメントを書く',
    '1件のコメント',
    '%件のコメント'
); ?>
  • コメントが0件 →「コメントを書く」
  • コメントが1件 →「1件のコメント」
  • 複数 →「X件のコメント」

「%」がコメント数に置換されます。

CSSクラスを付与する

リンクにクラスをつけて装飾する例です。

<?php comments_link(
    'コメントを残す',
    '1件のコメント',
    '%件のコメント',
    'comment-link'
); ?>

出力されるHTMLは次のようになります。

<a href="https://example.com/sample-post/#comments" class="comment-link">コメントを残す</a>

comments_link()の出力例

記事にコメントが3件ある場合、次のように出力されます。

<?php comments_link(
    'コメントはまだありません',
    '1件のコメント',
    '%件のコメント'
); ?>

表示テキスト:
「3件のコメント」

リンク先URL:
記事パーマリンク + #comments

例:
https://example.com/hello-world/#comments

コメントの可否を確認する

comments_link() は、コメントが許可されていない投稿でもリンクを出力します。
コメントが閉じている場合にリンクを非表示にしたい場合は、comments_open() を組み合わせます。

例:

<?php if ( comments_open() ) : ?>
    <?php comments_link('コメントを書く', '1件のコメント', '%件のコメント'); ?>
<?php endif; ?>

こうすると、コメントが許可されている投稿だけにリンクを表示できます。

リンク先の仕組み

comments_link() は、投稿のパーマリンクの末尾に #comments を付与したURLを返します。

例:

  • 投稿URL:https://example.com/post-name/
  • コメントURL:https://example.com/post-name/#comments

この #comments はテーマの comments_template() がレンダリングした <div id="comments"> に対応しています。

コメント数を数字で取得する場合

comments_link() はテキストリンクを出力します。
コメント数だけが必要な場合は、get_comments_number() を使います。

例:

<?php echo get_comments_number(); ?>

出力例:
「3」

カスタマイズの応用例

コメント数に応じてテキストを柔軟に制御したい場合、次のように条件分岐を使う方法もあります。

<?php
$num_comments = get_comments_number();

if ( $num_comments == 0 ) {
    $comments = 'コメントを書く';
} elseif ( $num_comments == 1 ) {
    $comments = '1件のコメント';
} else {
    $comments = $num_comments . '件のコメント';
}
?>

<a href="<?php comments_link(); ?>"><?php echo $comments; ?></a>

このようにすると、出力内容を完全にコントロールできます。

comments_popup_link()との違い

comments_link() と似た名前の関数に comments_popup_link() があります。

関数特徴
comments_link()通常のコメントアンカー付きURLを出力する。
comments_popup_link()コメントポップアップ表示用のリンクを出力(古いテーマ向け)。

最近のテーマでは comments_popup_link() はあまり使いません。

comments_link()のよくある誤解

  1. コメントが無効のときにリンクが非表示になる?
    → いいえ、comments_link() は常にリンクを出力します。
    comments_open()で制御が必要です。
  2. コメントが0件だとリンクが出ない?
    → いいえ、0件でも表示されます(テキストだけ変わる)。
  3. コメントURLは/comments/になる?
    → いいえ、投稿パーマリンクの#commentsアンカーです。

comments_link()のよく使う組み合わせ

  • コメント数取得 → get_comments_number()
  • コメントが許可されているか → comments_open()
  • コメントを表示する → comments_template()
  • コメントフォーム → comment_form()

これらと一緒に使うことで、コメント機能を総合的にデザインできます。

comments_link()のまとめ

comments_link()は、投稿のコメントエリアへのリンクを出力するシンプルで便利な関数です。

ポイント

  • コメント数に応じてテキストを分けられる。
  • カスタムテキストやCSSクラスを指定できる。
  • コメントが0件でもリンクを表示する。
  • comments_open() と併用して制御すると便利。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次