
next_post_link()とは?
next_post_link()
は、現在の投稿ページから「次の投稿」へのリンクを出力するテンプレートタグです。
「次の投稿」とは、現在表示している投稿よりも新しい日付で公開された投稿のことです(カスタム投稿タイプでも応用可)。
記事を連続的に読んでもらいたいときや、ブログ記事の前後ナビゲーションを設けたいときに便利です。
next_post_link()の基本構文
next_post_link( string $format = '%link', string $link = 'Next Post', bool $in_same_term = false, array|string $excluded_terms = '', string $taxonomy = 'category' )
next_post_link()のパラメーターの詳細
引数 | 型 | 内容 |
---|---|---|
$format | string | 出力されるHTML形式。%link がリンク部分に置換される。 |
$link | string | 実際のリンクテキスト(アンカーテキスト) |
$in_same_term | bool | 同じカテゴリーまたはタクソノミー内に限定するか(true で限定) |
$excluded_terms | string/array | 除外するカテゴリーIDやスラッグ |
$taxonomy | string | 使用するタクソノミー名(例:category , post_tag , カスタムタクソノミーなど) |
next_post_link()の戻り値
返り値はなし。
この関数は HTML を その場で echo 出力します。
next_post_link()の基本的な使い方
次の投稿へリンクを出力する
<?php next_post_link(); ?>
このコードを投稿ページの下部などに入れると、自動的に「次の投稿へのリンク」が生成されます。
出力例
<a href="https://example.com/newer-post/">Next Post</a>
テキストを変更する
<?php next_post_link('%link', '次の記事へ »'); ?>
HTMLごとカスタマイズ
<?php next_post_link('<div class="next-link">%link</div>', '→ 次の記事'); ?>
出力結果:
<div class="next-link"><a href="...">→ 次の記事</a></div>
同一カテゴリ内で限定したリンクにする
<?php next_post_link('%link', '次のカテゴリ記事 »', true); ?>
このようにすると、「現在の投稿と同じカテゴリー内での次の記事」だけに制限されます。
特定カテゴリを除外
<?php next_post_link('%link', '次の記事へ', false, '5,8'); ?>
この例では、カテゴリーID「5」「8」に属する投稿はナビゲーションから除外されます。
カスタムタクソノミーで制限
たとえばカスタム投稿タイプ「book」に、カスタムタクソノミー「genre」がある場合:
<?php next_post_link('%link', '次の作品へ', true, '', 'genre'); ?>
このようにすれば、「同じジャンルの作品内での次の記事」だけに限定できます。
previous_post_link() との違い
関数名 | 説明 |
---|---|
next_post_link() | より新しい投稿へのリンクを出力 |
previous_post_link() | より古い投稿へのリンクを出力 |
通常は、これらをセットで使用して前後ナビゲーションを作成します。
セットでの使用例
<div class="post-navigation">
<div class="prev"><?php previous_post_link('%link', '« 前の記事'); ?></div>
<div class="next"><?php next_post_link('%link', '次の記事 »'); ?></div>
</div>
next_post_link()の出力をカスタマイズする例
クラス付きのボタン風リンクにする
<?php next_post_link('<a class="next-btn">%link</a>', '次の記事を見る'); ?>
※注意:このような使い方をすると <a>
タグが二重になることがあるため、基本的には %link
部分を <a>
で囲まないようにします。
正しい方法:
<?php next_post_link('<div class="next-btn">%link</div>', '次の記事を見る'); ?>
next_post_link()の実際のテーマでの利用場面
単一投稿ページ(single.php
)などに記述
<article>
<?php the_content(); ?>
</article>
<nav class="post-navigation">
<div class="nav-previous">
<?php previous_post_link('%link', '« 前の記事'); ?>
</div>
<div class="nav-next">
<?php next_post_link('%link', '次の記事 »'); ?>
</div>
</nav>
next_post_link() を使う際の注意点
- 「次の記事」が存在しない場合、何も出力されません。
- 同じタクソノミーで限定した場合、該当記事がなければ非表示となります。
- クエリ順ではなく、「公開日時」によって「次の投稿」が判断されます。
- 投稿の「公開状態(公開/非公開/下書き)」にも依存します。
next_post_link()のよくある質問
- 固定ページ(
page.php
)では使えますか? -
いいえ、
next_post_link()
は 投稿(post) を対象とした関数です。固定ページでは機能しません。 next_post_link()
の出力を取得する関数はありますか?-
はい、
get_next_post_link()
を使うと出力ではなくHTML文字列として取得できます。例:
$link_html = get_next_post_link('%link', '次へ'); if ( $link_html ) { echo '<div class="next-post">' . $link_html . '</div>'; }
next_post_link()のまとめ
項目 | 内容 |
---|---|
関数名 | next_post_link() |
主な用途 | 現在の投稿より新しい投稿へのナビゲーション |
主な引数 | フォーマット、テキスト、同一カテゴリ制限、除外カテゴリ、タクソノミー指定 |
表示条件 | 次の投稿が存在する場合のみ出力される |
関連関数 | previous_post_link() , get_next_post_link() |
next_post_link()
は、ユーザーの回遊率を上げるための基本かつ重要な関数です。
ブログ、ニュース、作品紹介サイトなどで「次の記事へ」ナビゲーションを実装する際には積極的に活用しましょう。
もしカスタム投稿や表示順を柔軟に制御したい場合は、独自クエリや get_adjacent_post()
との併用も検討できます。