next_comments_link()

next_comments_link()
目次

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()の引数の解説

引数説明
$labelstringリンクテキスト。未指定の場合は「Newer Comments」。
$max_pageint最大ページ数。0の場合は全ページを対象にします。

この関数は出力専用で、リンクを文字列として返しません(echoするだけ)。
取得したい場合は get_next_comments_link() を使います。

next_comments_link()のページ送りの仕組み

コメントページ送りを有効にするには、管理画面の設定が必要です。

設定手順:

  1. WordPress管理画面 > [設定] > [ディスカッション]
  2. 「1ページあたり○件のコメントを含む」に件数を設定
  3. 「デフォルトで新しいコメントをページのトップに表示」を好みに応じて設定
  4. 保存

これで、コメント数が指定件数を超えた場合にページ送りが発生します。

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. コメント数が1ページ以内
    • 設定でページ分割が有効になっていても、実際のコメントが少ないとページ送りは出ません。
  2. 現在のページが最終ページ
    • 次ページが存在しない場合、リンクは出力されません。
  3. コメントが承認されていない
    • 未承認のコメントはページ数にカウントされません。
  4. テンプレートタグの位置が不適切
    • 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() を検討

コメントが活発なサイトやコミュニティサイトでは、ユーザー体験を高める大事な仕組みです。
テーマを作る際は、しっかりとコメントナビゲーションを用意しておくと良いでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次