同じカテゴリー限定や除外等、個別ページでのページ送り【WordPress】

個別投稿のページで表示するページ送り(前へ・次へ)のバリエーションになります。single.phpの他、single-{投稿タイプ名}.php や singular.php も対象になります。
パラメータを活用することで状況に応じた動作や表示が可能になります。

PR

前後の記事へのリンクを表示:基本

next_post_link()previous_post_link()を使います。
サンプルではオプションのパラメータで<a>の前後の文字列を無し、リンク文字列を “新しい記事”、”古い記事” と設定しています。

%linkの部分が<a>~~</a>にあたるため、前後の文字列を指定するには '前の文字 %link 後の文字' のように指定します。

<ul>
	<li><?php next_post_link( '%link', '新しい記事' ); ?></li>
	<li><?php previous_post_link( '%link', '古い記事' ); ?></li>
</ul>

現在の投稿と同じカテゴリー内でページ送りを行う

3番目のパラメータにtrueを指定することで、現在表示中の投稿と同じ分類(タクソノミー)項目(ターム)の投稿に限定してページ送りを行います。

<ul>
	<li><?php next_post_link( '%link', '新しい記事', true ); ?></li>
	<li><?php previous_post_link( '%link', '古い記事', true ); ?></li>
</ul>

任意のカテゴリーを除外してページ送りを行う

任意の項目ID(カテゴリーID等)を4番目のパラメータに指定して除外できます。
複数指定する場合はカンマ区切り、もしくは配列にします。

<ul>
	<li><?php next_post_link( '%link', '新しい記事', false, '1, 2' ); ?></li>
	<li><?php previous_post_link( '%link', '古い記事', false, '1, 2' ); ?></li>
</ul>

ページ分割された投稿のページ送りを表示

投稿内に「ページ区切り」を設置することで1つの投稿を複数ページに分割することができますが、分割されたページを表示するためにはテンプレートファイルにwp_link_pages()が用意されている必要があります。
オプションのパラメータを指定することで表示に関する整形が可能です。

<?php wp_link_pages() ?>

参考リンク
WordPress Codex – previous_post_link()
WordPress Codex – next_post_link()
WordPress Codex – wp_link_pages()


PR

タイトルとURLをコピーしました