1. WordPress

前後の記事へのリンクを表示させる|get_next_post、get_previous_post【WordPress】

Share

今回は、投稿ページに次の記事、前の記事へのリンクを表示させる方法を紹介します。

前後の投稿へのリンクを表示させるには、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_pingping送信先
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サニタイズの形式