
paginate_comments_links()とは?
paginate_comments_links()
は、
コメント一覧のページ送りナビゲーションを「ページ番号つき」で表示する関数
です。
next_comments_link()
やprevious_comments_link()
は「前へ」「次へ」のみでしたが、paginate_comments_links()
は 1,2,3…とページ番号リンクを生成できます。
ブログやメディアサイトなど、コメント数が多い場合に非常に便利です。
paginate_comments_links()のページ送りの仕組み
コメントのページ送りを利用するには、まず設定が必要です。
有効化手順
- 管理画面 → [設定] → [ディスカッション]
- 「1ページあたり○件のコメントを含む」でページ分割を有効化
- 表示順やデフォルトページを選択
- 設定を保存
この設定を行った上で、paginate_comments_links()
を使うとページ番号ナビが表示されます。
paginate_comments_links()の基本的な書式
paginate_comments_links( array $args = array() )
戻り値:
HTMLのナビゲーションリンクを出力します(echo)。
取得したい場合は get_paginate_comments_links()
(5.3以降)を使用。
paginate_comments_links()の引数 $args
の主なオプション
以下の表にまとめます。
パラメータ | 説明 | デフォルト |
---|---|---|
base | ページ番号のURL形式 | add_query_arg('cpage','%#%') |
format | ページ番号のフォーマット | 空文字列 |
total | 総ページ数 | $wp_query->max_num_comment_pages |
current | 現在のページ番号 | get_query_var('cpage') |
prev_text | 「前へ」のテキスト | « |
next_text | 「次へ」のテキスト | » |
type | 出力形式 (plain , array , list ) | plain |
end_size | 両端に表示するページ数 | 1 |
mid_size | 現在ページ前後の表示数 | 2 |
add_fragment | URL末尾に付けるフラグメント | 空文字列 |
echo | 出力するか (true or false ) | true |
paginate_comments_links()のシンプルな使用例
<div class="comment-pagination">
<?php paginate_comments_links(); ?>
</div>
これだけで基本的なページ番号が出力されます。
paginate_comments_links()のカスタマイズ例
たとえば、テキストと表示数を調整したい場合:
<div class="comment-pagination">
<?php
paginate_comments_links( array(
'prev_text' => '« 前のコメント',
'next_text' => '次のコメント »',
'end_size' => 1,
'mid_size' => 1,
) );
?>
</div>
paginate_comments_links()の出力形式のカスタマイズ (type
)
type
を変更するとHTML構造が変わります。
値 | 説明 |
---|---|
plain | 単純なリンクを連結した文字列(デフォルト) |
list | <ul><li> 形式 |
array | 各リンクを要素とする配列(echoされず取得のみ) |
list形式の例
paginate_comments_links( array(
'type' => 'list',
'prev_text' => '«',
'next_text' => '»'
) );
出力されるHTML:
<ul class="page-numbers">
<li><a class="prev page-numbers">«</a></li>
<li><a class="page-numbers">1</a></li>
<li><span aria-current="page" class="page-numbers current">2</span></li>
<li><a class="page-numbers">3</a></li>
<li><a class="next page-numbers">»</a></li>
</ul>
CSSで装飾しやすいのでおすすめです。
paginate_comments_links()のURLのカスタマイズ (base
)
URLの形式を変えたいときに使います。
例:クエリパラメータではなく「フレンドリーURL」を使う場合
paginate_comments_links( array(
'base' => trailingslashit( get_permalink() ) . 'comment-page-%#%/',
'format' => '',
) );
この例ではURLが以下のようになります。
https://example.com/post-title/comment-page-2/
paginate_comments_links()の現在のページ (current
)
current
は現在のページ番号を手動で指定できます。
通常はget_query_var('cpage')
が使われますが、条件分岐などで制御する場合に便利です。
例:常に1ページ目を強制する
paginate_comments_links( array(
'current' => 1
) );
paginate_comments_links()のURLフラグメント (add_fragment
)
リンク先URLの末尾に自動でハッシュを追加できます。
例:
paginate_comments_links( array(
'add_fragment' => '#comments'
) );
この場合、リンク先は
https://example.com/post-title/?cpage=2#comments
となります。
paginate_comments_links()の出力ではなく取得 (echo
)
echo
をfalse
にすると、文字列で返します。
例:
$links = paginate_comments_links( array(
'echo' => false
) );
echo '<nav class="comment-nav">' . $links . '</nav>';
テンプレートタグ内でラップする場合や条件分岐に便利です。
paginate_comments_links()のCSSでの装飾
type => 'list'
を使った場合は以下のようにCSSを当てると見やすいです。
.comment-pagination ul {
display: flex;
gap: 8px;
list-style: none;
padding: 0;
}
.comment-pagination li a,
.comment-pagination li span {
padding: 6px 10px;
background: #eee;
border-radius: 4px;
text-decoration: none;
color: #333;
}
.comment-pagination li span.current {
background: #333;
color: #fff;
}
get_paginate_comments_links()
WordPress 5.3 以降ではget_paginate_comments_links()
が使えます。
これは「出力せず文字列を返す関数」です。
使い方は同じです。
例:
$html = get_paginate_comments_links(array(
'type' => 'list'
));
if ($html) {
echo '<nav class="comment-nav">' . $html . '</nav>';
}
paginate_comments_links()の注意点
- コメントページ送りが有効になっていないと何も表示されません
- コメント数が少ない場合もページリンクは生成されません
paginate_comments_links()
はグローバル変数$wp_query
を利用しています- カスタムクエリでコメントを表示する場合は動かないことがあります
paginate_comments_links()のまとめ
paginate_comments_links()
はコメントページネーションをきれいに整える強力な関数です。
ポイントをおさらい:
- ページ番号ナビゲーションを一括生成
type
でHTML形式を柔軟に切り替え可能prev_text
やnext_text
でラベルを変更base
とformat
でURL構造をカスタマイズget_paginate_comments_links()
で文字列取得も可能
コメント数の多いメディアやコミュニティサイトには欠かせない機能です。