
next_comments_link()とは?
next_comments_link()
は、コメント一覧のページ送り(ページネーション)で「次のコメントページへのリンク」を表示するためのテンプレートタグです。
WordPressではコメントが多い記事の場合、自動的に複数ページに分割して表示されます。
このとき、読者がページを移動できるようにナビゲーションを設置します。
記事本文のページ送りに使う next_posts_link()
と似た概念で、コメント専用のバージョンが next_comments_link()
です。
next_comments_link()の基本的な書式
next_comments_link( string $label = '', int $max_page = 0 );
戻り値:
リンクをHTMLで出力します。リンクがない場合は何も表示しません。
next_comments_link()の引数の解説
引数 | 型 | 説明 |
---|---|---|
$label | string | リンクテキスト。未指定の場合は「Newer Comments」。 |
$max_page | int | 最大ページ数。0の場合は全ページを対象にします。 |
この関数は出力専用で、リンクを文字列として返しません(echoするだけ)。
取得したい場合は get_next_comments_link()
を使います。
next_comments_link()のページ送りの仕組み
コメントページ送りを有効にするには、管理画面の設定が必要です。
設定手順:
- WordPress管理画面 > [設定] > [ディスカッション]
- 「1ページあたり○件のコメントを含む」に件数を設定
- 「デフォルトで新しいコメントをページのトップに表示」を好みに応じて設定
- 保存
これで、コメント数が指定件数を超えた場合にページ送りが発生します。
next_comments_link()の実装例
以下は、記事のコメント下に「前へ」「次へ」リンクを表示する例です。
<div class="comment-navigation">
<div class="nav-previous">
<?php previous_comments_link('« 新しいコメントへ') ?>
</div>
<div class="nav-next">
<?php next_comments_link('古いコメントへ »') ?>
</div>
</div>
このように previous_comments_link()
とセットで使うのが一般的です。
max_page
の使い方
例えば、5ページまでしか遷移させたくない場合:
next_comments_link('もっと古いコメントを見る', 5);
この場合、6ページ目以降のリンクは出力されません。
get_next_comments_link()との違い
next_comments_link()
と get_next_comments_link()
は非常に似ています。
関数 | 役割 |
---|---|
next_comments_link() | 直接リンクHTMLを出力する(echo)。 |
get_next_comments_link() | リンクHTMLを文字列として返す(return)。 |
カスタム出力に使いたい場合は get_next_comments_link()
を利用しましょう。
例:条件付きでカスタムHTMLを作る
$link = get_next_comments_link('次のコメント');
if ($link) {
echo '<div class="my-next-link">' . $link . '</div>';
}
出力されない場合の注意点
next_comments_link()
が何も表示しない原因は主に以下の通りです。
- コメント数が1ページ以内
- 設定でページ分割が有効になっていても、実際のコメントが少ないとページ送りは出ません。
- 現在のページが最終ページ
- 次ページが存在しない場合、リンクは出力されません。
- コメントが承認されていない
- 未承認のコメントはページ数にカウントされません。
- テンプレートタグの位置が不適切
wp_list_comments()
の外やループ外に置くと正しく動かない場合があります。
CSSカスタマイズ例
出力されるHTMLは単純な <a>
タグなので、クラスを付与して装飾します。
<div class="nav-next">
<a href="...">古いコメントへ</a>
</div>
以下のようなCSSを当てると見やすいナビゲーションになります。
.comment-navigation {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
.comment-navigation a {
background: #f5f5f5;
padding: 8px 16px;
text-decoration: none;
border-radius: 4px;
color: #333;
}
.comment-navigation a:hover {
background: #ddd;
}
next_comments_link()の実用的なカスタマイズ
「次ページが存在しない場合に非表示」を明示的に制御したいときは get_next_comments_link()
を使います。
例: 次ページリンクがあるときだけdivを表示
<?php if (get_next_comments_link()): ?>
<div class="comment-nav-next">
<?php next_comments_link('もっと古いコメント »'); ?>
</div>
<?php endif; ?>
フィルターフック
next_comments_link()
単体に直接適用するフィルターフックはありませんが、paginate_comments_links()
という別の関数を使うと、全ページナビゲーションを一括生成できます。
例:ページ番号の一覧を出力
<?php
paginate_comments_links(array(
'prev_text' => '« 前へ',
'next_text' => '次へ »',
));
?>
「前・次リンクだけでなく全ページを出したい場合」はこちらを使います。
next_comments_link()のまとめ
next_comments_link()
は「次のコメントページ」へのリンクを出力するテンプレートタグ- ページ分割設定が有効でコメント数が多いときのみ動作
previous_comments_link()
と組み合わせて使うget_next_comments_link()
を使うと出力内容を変数で取得可能- ページネーション全体を制御したい場合は
paginate_comments_links()
を検討
コメントが活発なサイトやコミュニティサイトでは、ユーザー体験を高める大事な仕組みです。
テーマを作る際は、しっかりとコメントナビゲーションを用意しておくと良いでしょう。