WordPressでは、ブログやお知らせなどの記事の下によくある「前の記事へ」「次の記事へ」のページネーションを出力できるテンプレートタグprevious_post_link()とnext_post_link()が用意されています。
今回はこのテンプレートタグを使って前後の記事へのページネーションを出力する方法と、カスタマイズする方法を解説していきます。
previous_post_link()とnext_post_link()にクラスを付ける方法は、「前の記事へ」「次の記事へ」のリンクにclassを付ける方法【WordPress】で解説していますのでご覧ください。
テンプレートタグ「previous_post_link()」と「next_post_link()」
WordPressで用意された専用の関数であるテンプレートタグの中に、前の記事へのリンクを出力するprevious_post_link()と次の記事へのリンクを出力するnext_post_link()があります。
それぞれ、WordPressのテンプレートファイルの中に記述する事でページネーションを表示できます。
<?php previous_post_link(); ?>
<?php next_post_link(); ?>
以下が出力されるコードです。
« <a href="前の記事のリンク" rel="prev">前の記事タイトル</a>
<a href="次の記事のリンク" rel="next">次の記事タイトル</a> »
上記のように、そのままの状態だと矢印(«・»)とリンクになった記事のタイトルが表示されます。
previous_post_link()とnext_post_link()にはそれぞれ引数を指定する事が出来、ある程度カスタマイズして表示が可能です。
表示されている矢印を消す
デフォルトの状態だと矢印と記事タイトルが表示されますが、矢印を消したい場合は以下のように記述します。
<?php previous_post_link('%link'); ?>
<?php next_post_link('%link'); ?>
以下が出力されるコードです。
<a href="前の記事のリンク" rel="prev">前の記事タイトル</a>
<a href="次の記事のリンク" rel="next">次の記事タイトル</a>
「%link」はURLを含めたリンクタグ(aタグ)を出力するパラメーターになります。
デフォルトでは、「« %link」となっているため、上記のように記述すると矢印を消す事ができます。
表示されるテキストを変更する
デフォルトの状態では第2引数に「%title」が指定されていて記事のタイトルが表示されますが、表示されるテキストを変更する場合は第2引数に任意のテキストを記述します。
<?php previous_post_link('%link', '前の記事へ'); ?>
<?php next_post_link('%link', '次の記事へ'); ?>
以下が出力されるコードです。
<a href="前の記事のリンク" rel="prev">前の記事へ</a>
<a href="次の記事のリンク" rel="next">次の記事へ</a>
同じカテゴリーの前後の記事を表示する
表示されている記事と同じカテゴリー(ターム)の前後の記事を表示したい場合は、第3引数に「true」と記述します。
<?php previous_post_link('%link', '前の記事へ', true); ?>
<?php next_post_link('%link', '次の記事へ', true); ?>
カスタム投稿タイプの記事の場合
カスタム投稿タイプの記事の場合、特定のカスタムタクソノミーで現在のタームの前後の記事を出力するには第5引数にカスタムタクソノミーのスラッグを指定する必要があります。
<?php previous_post_link('%link', '前の記事へ', true, '', 'news_category'); ?>
<?php next_post_link('%link', '次の記事へ', true, '', 'news_category'); ?>
特定のカテゴリー(ターム)を除外する
特定のカテゴリー(ターム)を除外したい場合は、第4引数にカテゴリーID(タームID)を指定します。
<?php previous_post_link('%link', '前の記事へ', true, '5'); ?>
<?php next_post_link('%link', '次の記事へ', true, '5'); ?>
第3引数は場合によって「true」と「false」を変更してください。
また、除外したいカテゴリー(ターム)が複数ある場合はカンマ区切りか配列で記述します。
<?php
// カンマ区切り
previous_post_link('%link', '前の記事へ', true, '5,10');
// 配列
previous_post_link('%link', '前の記事へ', true, array(5,10));
?>
前後の記事が無い場合は非表示にする
ページネーションを表示する際に、他のHTMLタグなどと合わせて表示するかと思います。
前後の記事が無い場合などに不要なタグやページネーションを出力しなくするにはif文を使います。
<?php if (get_previous_post()): ?>
<p><?php previous_post_link('%link', '前の記事へ'); ?></p>
<?php endif; ?>
<?php if (get_next_post()): ?>
<p><?php next_post_link('%link', '次の記事へ'); ?></p>
<?php endif; ?>
「get_previous_post()」や「get_next_post()」は前後の記事の情報を取得できます。その情報がある場合のみ他のHTMLタグを含めたページネーションを表示する事が出来ます。
さいごに
いかがでしたでしょうか。
今回は、前後の記事へのページネーションを実装・カスタマイズする方法を解説しました。
今回解説した2つのテンプレートタグはWordpressのブログやお知らせなどの記事の表示でよく使用しますので、表示方法を含めカスタマイズ方法も知っておくと便利です。
previous_post_link()とnext_post_link()にクラスを付ける方法は、「前の記事へ」「次の記事へ」のリンクにclassを付ける方法【WordPress】で解説していますのでご覧ください。