
comments_popup_link()とは?
comments_popup_link()
は、記事ごとのコメント数を表示し、そのリンクをクリックするとコメントフォームや既存コメントを表示するページを開くリンクを出力するテンプレートタグです。
本来は、コメントが別ウィンドウ(ポップアップ)で開かれる仕組みを想定して作られた関数ですが、現在では多くのテーマがポップアップを使わず通常のパーマリンクへ移動する仕様になっています。
とはいえ、便利な特徴として、
- コメントの件数に応じて異なるテキストを自動で出力
- コメントページへのリンクを自動生成
があり、古いテーマから新しいテーマまで幅広く使われています。
comments_popup_link()基本的な書式
comments_popup_link(
string $zero = false,
string $one = false,
string $more = false,
string $css_class = '',
string $none = false
)
パラメータは5つです。
パラメータ | 内容 |
---|---|
$zero | コメントが0件のときの表示テキスト |
$one | コメントが1件のときの表示テキスト |
$more | コメントが複数のときの表示テキスト(% が数字に置換) |
$css_class | <a> タグに付与するクラス |
$none | コメントが閉じているときのテキスト |
comments_popup_link()シンプルな使い方
パラメータを省略して呼び出すと、WordPressデフォルトの英語テキストが表示されます。
<?php comments_popup_link(); ?>
表示例(翻訳されていない場合):
- コメント0件 →「No Comments »
- コメント1件 →「1 Comment »
- コメント複数 →「% Comments »
- コメント無効 →「Comments Off »
日本語化されたテーマでは翻訳済みのテキストになります。
日本語で表示する
パラメータをすべて指定すると、自分好みの表示ができます。
<?php comments_popup_link(
'コメントを書く',
'1件のコメント',
'%件のコメント',
'comment-link',
'コメントは閉じられています'
); ?>
表示例:
- コメント0件 →「コメントを書く」
- コメント1件 →「1件のコメント」
- コメント3件 →「3件のコメント」
- コメント不可 →「コメントは閉じられています」
%
の置換ルール
$more
に含めた「%」は、コメント数に置き換わります。
例:
<?php comments_popup_link(
'コメントなし',
'1件',
'%件'
); ?>
5件ある場合は「5件」と表示されます。
出力されるHTML
上記の例では、次のようなHTMLが生成されます。
<a href="https://example.com/sample-post/#respond" class="comment-link">コメントを書く</a>
クリックするとコメント欄へ遷移します。
CSSクラスでデザイン
4つ目のパラメータでCSSクラスを追加し、装飾が可能です。
例:
<?php comments_popup_link(
'コメントを書く',
'1件',
'%件',
'my-comment-class'
); ?>
出力:
<a href="...comments..." class="my-comment-class">コメントを書く</a>
コメントが閉じている場合
5つ目のパラメータで非表示ではなく置き換えテキストを出せます。
例:
<?php comments_popup_link(
'コメントを書く',
'1件',
'%件',
'',
'コメント受付終了'
); ?>
コメントが無効なら「コメント受付終了」と表示されます。
「ポップアップ」とは?
名前に「popup」とありますが、実際はテーマ側でポップアップウィンドウを開くJavaScriptが必要です。
例:
古いテーマの header.php
にこういったコードがあります。
<script type="text/javascript">
function popUp(url) {
window.open(url, 'comments', 'width=400,height=400,scrollbars=yes');
}
</script>
そしてリンクをクリックしたときにこの関数を呼ぶ仕組みです。
最近のテーマはポップアップを使わず、単にパーマリンクのコメント部分へ飛ばすだけです。
ポップアップを使わない場合
最近はほとんどが通常遷移なので、気にせず使って問題ありません。
コメント数だけ取得するには?
comments_popup_link()
はテキストとリンクを同時に出力する関数です。
数字だけ取得する場合は get_comments_number()
を使います。
<?php echo get_comments_number(); ?>
comments_number()
との違い
混同しやすい関数に comments_number()
があります。
関数 | 特徴 |
---|---|
comments_number() | テキストだけ表示(リンクなし) |
comments_popup_link() | テキスト+リンクを生成 |
条件分岐で表示を制御
コメントが閉じている投稿に表示しない場合は comments_open()
で判定します。
例:
<?php if ( comments_open() ) : ?>
<?php comments_popup_link(
'コメントを書く',
'1件',
'%件'
); ?>
<?php endif; ?>
HTMLラッピング例
装飾をする場合は、<div>
や<span>
でラッピングして問題ありません。
<div class="comment-wrapper">
<?php comments_popup_link(
'コメントを残す',
'1件のコメント',
'%件のコメント'
); ?>
</div>
フィルター
この関数には直接フックはありませんが、内部的に get_comments_number()
が呼ばれるため、
add_filter('get_comments_number', function($count) {
return $count + 1;
});
のように数を操作できます。
comments_popup_link()使用例まとめ
例1: デフォルト
<?php comments_popup_link(); ?>
例2: 日本語
<?php comments_popup_link(
'コメントを書く',
'1件のコメント',
'%件のコメント'
); ?>
例3: CSSクラスを指定
<?php comments_popup_link(
'コメントなし',
'1件',
'%件',
'my-class'
); ?>
例4: コメント不可のテキスト
<?php comments_popup_link(
'コメントを残す',
'1件',
'%件',
'',
'コメント受付終了'
); ?>
comments_popup_link()注意点
- コメントリンクは常に出力されます(条件分岐で制御推奨)。
%
はコメント数に置換されるので忘れずに指定。- 名前に「popup」とあるが、実際はポップアップせず通常遷移が多い。
comments_popup_link()まとめ
comments_popup_link()
のポイント
- コメント数に応じたテキストとリンクを一括生成
- 5つのパラメータで柔軟にカスタマイズ
- 古いテーマではポップアップ、最近は通常リンク
- CSSクラス・受付終了テキストも指定可能