WordPressの記事の最下部などに表示される「前の記事」「次の記事」のリンクを簡単に出力する方法を紹介します。

標準的なナビゲーション表示

最も簡単なのはテンプレートタグ「the_post_navigation()」を使う方法。
これを使うと次のようにナビゲーションが表示されます。

<?php the_post_navigation(); ?>

出力結果

<nav class="navigation post-navigation" aria-label="投稿">
	<h2 class="screen-reader-text">投稿ナビゲーション</h2>
	<div class="nav-links">
		<div class="nav-previous">
			<a href="前の記事リンク" rel="prev">前の記事タイトル</a>
		</div>
		<div class="nav-next">
			<a href="次の記事リンク" rel="next">次の記事タイトル</a>
		</div>
	</div>
</nav>

the_post_navigation()のオプション

the_post_navigation()で指定できるパラメータについて解説します。
これで出力結果をカスタマイズできます。

属性名 デフォルト 説明 詳細
prev_text 前の記事 前の記事のリンクテキスト 記事タイトルを表示する場合は「%title」
next_text 次の記事 次の記事のリンクテキスト 記事タイトルを表示する場合は「%title」
in_same_term false 取得対象を同じタクソノミーの記事に限定 例)同じカテゴリーの記事に限定する場合は「true」
excluded_terms なし 取得対象から外したいタクソノミーのIDを指定 例)IDが21のカテゴリーを除外する場合は「21」(配列可)
taxonomy category in_same_termが「true」の場合に限定するタクソノミー 例)’category’と入力すると投稿カテゴリーの記事に限定
screen_reader_text Post navigation マークアップ内のh2見出しに表示されるテキスト 例)「次の記事」や「前の記事」など視覚補助用テキスト
aria_label Post navigation nav要素のaria-label属性 例)「ページナビゲーション」などのアクセシビリティ用テキスト
class なし nav要素に任意のクラスを指定 例)「custom-navigation」など

使い方は the_post_navigation( $args ); です。

<h2 class="screen-reader-text">投稿ナビゲーション</h2> 表記を削除する

h2タグで囲われている「投稿ナビゲーション」の表示が不要な場合、「the_post_navigation()」ではなく「get_the_post_navigation()」を使います。

<?php
	$args = array(
		'prev_text' => '« 前の記事',
		'next_text' => '次の記事 »',
	);
	$navigation = get_the_post_navigation($args);
	$navigation = preg_replace("/]*?>.*?<\/h2>/i", '', $navigation);
	echo $navigation;
?>

これで、h2タグを削除し、カスタム表示が可能になります。

シンプルな「前の記事」「次の記事」の表示

「previous_post_link」と「next_post_link」で、リンクを個別にカスタマイズできます。

<?php previous_post_link(); ?>
<?php next_post_link(); ?>

次のようにHTMLが出力されます。

<a href="前の記事のリンクURL" rel="prev">前の記事のタイトル</a>
<a href="次の記事のリンクURL" rel="next">次の記事のタイトル</a>

テキストを変更して表示

リンクテキストを変更する場合は、テンプレートタグの第2引数にテキストを指定します。

<?php previous_post_link('%link', '前の記事へ'); ?>
<?php next_post_link('%link', '次の記事へ'); ?>

同じカテゴリー内での前後の記事リンク

同じカテゴリー内の前後記事にリンクするには、第3引数にtrueを設定します。
デフォルトでは「FALSE」となっています。

<?php previous_post_link('%link','%title', true); ?>
<?php next_post_link('%link','%title', true); ?>

前後の記事が無い場合は非表示にする

リンクを条件分岐で囲み、前後の記事がない場合は非表示にします。

<?php if (get_previous_post()): ?>
    <p><?php previous_post_link(); ?></p>
<?php endif; ?>
<?php if (get_next_post()): ?>
    <p><?php next_post_link(); ?></p>
<?php endif; ?>

ナビゲーション表示の比較まとめ

タグ 役割 表示場所 出力内容
the_post_navigation 前後の投稿リンクをまとめて表示 単一投稿ページ全般 前後の投稿リンク
previous_post_link 前の投稿リンクを表示 単一投稿ページ 前の投稿リンクのみ
next_post_link 次の投稿リンクを表示 単一投稿ページ 次の投稿リンクのみ

以上。「前の記事」「次の記事」の出力方法でした。
頻繁に使うテンプレートタグですので覚えておきましょう。