今回は、投稿ページに次の記事、前の記事へのリンクを表示させる方法を紹介します。
前後の投稿へのリンクを表示させるには、get_next_post関数とget_previous_post関数を使います。
ブログサイトで使うことの多いコードなので、使い方を覚えておきましょう。
基本的な使い方
前後の記事へのリンクは以下のようなコードで表示させます。
single.php
<?php
$next_post = get_next_post();
$previous_post = get_previous_post();
?>
<nav class="page-nav">
<div class="page-nav__item page-nav__item--next">
<?php if ( ! empty( $next_post ) ) : ?>
<a href="<?php echo get_permalink( $next_post->ID ); ?>" class="page-nav__link">
<p class="page-nav__text">次の記事</p>
<p class="page-nav__title"><?php echo $next_post->post_title; ?></p>
</a>
<?php endif; ?>
</div>
<div class="page-nav__item page-nav__item--prev">
<?php if ( ! empty( $previous_post ) ) : ?>
<a href="<?php echo get_permalink( $previous_post->ID ); ?>" class="page-nav__link">
<p class="page-nav__text">前の記事</p>
<p class="page-nav__title"><?php echo $previous_post->post_title; ?></p>
</a>
<?php endif; ?>
</div>
</nav>
get_next_postとget_previous_postの戻り値はオブジェクトで、投稿の情報を取得できます。
同じカテゴリーの投稿だけを表示
同じカテゴリーの、前後の記事を取得することも可能です。
single.php
<?php
$next_post = get_next_post( true );
$previous_post = get_previous_post( true );
?>
get_next_post関数、get_previous_post関数の第一引数をtrueにすると、前後にある同じカテゴリーの投稿だけを取得します。
single.php
<?php
$next_post = get_next_post( true );
$previous_post = get_previous_post( true );
?>
第3引数にタグやカスタムタクソノミーを指定すると、カテゴリーではなく同じタグやカスタムタクソノミーにすることも可能です。
single.php
<?php
$next_post = get_next_post( true, '', 'tag' );
$previous_post = get_previous_post( true, '', 'tag' );
?>
特定のカテゴリー(またはタグやカスタムタクソノミー)を除外したい場合は、第二引数にタームIDを入れます。
single.php
<?php
$next_post = get_next_post( true, '3,4', 'tag' );
$previous_post = get_previous_post( true, '3,4', 'tag' );
?>
除外するタームIDは、コンマ区切りで複数入れることができます。
get_next_post関数、get_previous_post関数で取得される戻り値のプロパティ一覧
get_next_post関数、get_previous_post関数で取得できるオブジェクトのプロパティには、以下の情報が格納されています。
プロパティ | 格納される情報 |
---|---|
ID | 投稿ID |
post_author | 投稿者のユーザーID |
post_date | 投稿日時 |
post_date_gmt | 投稿日時(グリニッジ標準時) |
post_content | 投稿内容 |
post_title | 投稿のタイトル |
post_excerpt | 投稿の抜粋 |
post_status | 公開状況 |
comment_status | コメントの受付状況 |
ping_status | トラックバック・ピンバックの受付状況 |
post_password | 投稿のパスワード |
post_name | スラッグ |
to_ping | ping送信先 |
pinged | トラックバック送信先 |
post_modified | 更新日時 |
post_modified_gmt | 更新日時(グリニッジ標準時) |
post_content_filtered | フィルター適用後の投稿内容 |
post_parent | 親の投稿ID |
guid | (「基本」に設定している場合の)記事のURL |
menu_order | 表示順 |
post_type | 投稿タイプ |
post_mime_type | 添付ファイルのMIME形式 |
comment_count | コメント数 |
filter | サニタイズの形式 |