
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()
と併用して条件分岐も可能
コメント表示の定番タグのひとつです。テーマのデザインに合わせて自由にカスタマイズできます。