comments_number()

comments_number()
目次

comments_number()とは?

comments_number() は、投稿に紐づくコメントの数を表示するテンプレートタグです。
この関数は単に数字を出すだけでなく、コメント数に応じて異なるテキストを出力できるのが特徴です。

たとえば、以下のようにコメント数に応じて表現を変えたい場合に便利です。

  • コメントが0件 →「コメントはまだありません」
  • コメントが1件 →「1件のコメント」
  • 複数 →「X件のコメント」

このような表示をひとつの関数で完結できます。

comments_number()の基本的な書式

comments_number( string $zero = false, string $one = false, string $more = false )

パラメータは3つです。

パラメータ内容
$zeroコメントが0件のときの表示テキスト
$oneコメントが1件のときの表示テキスト
$moreコメントが2件以上のときの表示テキスト(% が数字に置換される)

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

パラメータを省略すると、WordPressのデフォルトテキストが出力されます。

<?php comments_number(); ?>

デフォルトでは下記のように表示されます(翻訳環境による):

  • 0件 →「No Comments」
  • 1件 →「1 Comment」
  • 複数 →「% Comments」

日本語化されていないテーマの場合、このように英語のテキストになります。

comments_number()の表示を日本語化する

実用的には、パラメータを指定して日本語化することが多いです。

例:

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

こうすると:

  • 0件 →「コメントはまだありません」
  • 1件 →「1件のコメント」
  • 3件 →「3件のコメント」

このようにコメント数に応じて柔軟に表示できます。

% の置換ルール

$more パラメータに指定した文字列内の「%」は、自動的にコメント数に置換されます。

例:

<?php comments_number(
    'まだ誰もコメントしていません',
    '1件のコメントがあります',
    '%件のコメントがあります'
); ?>

仮に5件のコメントがあると:

「5件のコメントがあります」

と表示されます。

HTMLタグを含める

テキストにはHTMLを埋め込むこともできます。

例:

<?php comments_number(
    '<span class="no-comments">コメントなし</span>',
    '<span class="one-comment">1件</span>',
    '<span class="multi-comments">%件</span>'
); ?>

CSSでスタイリングする場合に便利です。

数字だけ取得するには?

comments_number() はテキストを出力する関数です。
コメント数だけを取得したい場合は、別の関数 get_comments_number() を使います。

例:

<?php
$count = get_comments_number();
echo 'コメント数: ' . $count;
?>

結果:
「コメント数: 4」

リンクと組み合わせる

コメント数表示をリンクにしたい場合は、comments_link() と組み合わせます。

例:

<a href="<?php comments_link(); ?>">
    <?php comments_number(
        'コメントを書く',
        '1件のコメント',
        '%件のコメント'
    ); ?>
</a>

このようにすると、クリックでコメント欄に飛べる便利なリンクが作れます。

comments_popup_link()との違い

似た機能に comments_popup_link() がありますが、役割が異なります。

関数概要
comments_number()コメント数のテキストを出力するだけ
comments_link()コメントページのURLを出力
comments_popup_link()コメント数のテキスト + コメントページのリンクを生成(古いポップアップ用)

comments_popup_link() は古いテーマ向けで、最近はあまり使われません。

コメントが無効の場合

注意点:
comments_number() はコメントが無効な投稿でも出力されます。

「コメント受付をオフにした投稿でも数字が出る」ことがあるため、条件分岐で制御するのがおすすめです。

例:

<?php if ( comments_open() ) : ?>
    <?php comments_number(); ?>
<?php endif; ?>

これでコメントが開いている投稿だけに表示できます。

応用: 条件分岐でカスタマイズ

もっと細かい制御をしたい場合、get_comments_number()comments_open() を組み合わせて柔軟に出し分けられます。

例:

<?php
$count = get_comments_number();
if ( comments_open() ) {
    if ( $count == 0 ) {
        echo 'コメントはまだありません';
    } elseif ( $count == 1 ) {
        echo '1件のコメントがあります';
    } else {
        echo $count . '件のコメントがあります';
    }
} else {
    echo 'コメントは閉じています';
}
?>

このようにすると、どんなケースでも適切に表示を切り替えられます。

フィルターフック

comments_number() 自体にフィルターはありませんが、内部で get_comments_number() が呼ばれます。

コメント数をプログラム的に変更したい場合は、get_comments_number フィルターを活用できます。

例:

add_filter('get_comments_number', function($count) {
    if ( is_single() ) {
        return $count + 1; // すべての投稿でコメント数+1
    }
    return $count;
});

この例では、コメント数を1増やして表示できます。

comments_number()の使用例のまとめ

例1: デフォルト表示

<?php comments_number(); ?>

例2: 日本語テキストを指定

<?php comments_number(
    'コメントなし',
    '1件のコメント',
    '%件のコメント'
); ?>

例3: リンクにする

<a href="<?php comments_link(); ?>">
    <?php comments_number(
        'コメントを書く',
        '1件のコメント',
        '%件のコメント'
    ); ?>
</a>

comments_number()のよくある質問

コメント数が0でもリンクが表示される?

comments_number()はリンクを生成しません。リンクは comments_link() を使います。

コメントが無効のときはどうなる?

数字は表示されます。非表示にしたい場合は comments_open() で判定してください。

数字だけ取得する方法は?

get_comments_number() を使います。

comments_number()のまとめ

comments_number()のポイント

  • コメント数に応じたテキストを自動で出し分け
  • %で数字を埋め込み可能
  • HTMLタグを使える
  • リンクと組み合わせると便利
  • get_comments_number()と併用して条件分岐も可能

コメント表示の定番タグのひとつです。テーマのデザインに合わせて自由にカスタマイズできます。

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

この記事を書いた人

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

目次