comments_popup_link()

comments_popup_link()
目次

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クラス・受付終了テキストも指定可能
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次