WordPress:同じカテゴリー・タグが設定されている前後の記事リンクを表示させる方法

WordPress:同じカテゴリー・タグが設定されている前後の記事リンクを表示させる方法

WordPressで構築されたブログやメディアでよく見かける詳細ページで前後記事へのリンクを設置の際に、単純な前後記事へのリンクではなく現在表示しているカテゴリーやタグと同じものが設定されている記事へのリンクを表示させる方法です。

in_same_termを使う

以下では前後の記事リンクを表示させるために全部で3種類の関数での使用方法を紹介していますが、先に結論から言うといずれも基本的に$in_same_termというオプションを利用することで実装できます。
the_post_navigation()は前後両方の記事へのリンクを表示させたい場合、previous_post_link()は前の記事へのリンクを表示させたい場合、next_post_link()は次の記事へのリンクを表示させたい場合になります。

同じカテゴリー(投稿)

デフォルトの投稿にあるカテゴリーを利用している場合は、下記のようにそれぞれ$in_same_termtrueにするだけで実装でき、previous_post_link()next_post_link()の場合は第3引数をtrueにします。

PHP

// the_post_navigation()
the_post_navigation(
  array(
    'in_same_term' => true,
  )
);

// previous_post_link()
previous_post_link( '%link', '%title', true );

// next_post_link()
next_post_link( '%link', '%title', true );

同じタグ(投稿)

デフォルトの投稿にあるタグを利用している場合は、$in_same_termの値変更に加えて$taxonomyの指定が必要になります。
タグの場合はタクソノミー が「post_tag」となるので下記のようにそれぞれ記述し、previous_post_link()next_post_link()の場合は第5引数に値を記述します。

PHP

// the_post_navigation()
the_post_navigation(
  array(
    'in_same_term' => true,
    'taxonomy' => 'post_tag',
  )
);

// previous_post_link()
previous_post_link( '%link', '%title', true, '', 'post_tag' );

// next_post_link()
next_post_link( '%link', '%title', true, '', 'post_tag' );

同じタクソノミー

自身で用意したカスタムタクソノミーも上で紹介したタグの場合と同様で、$in_same_termtrue指定と該当のタクソノミーを指定することで表示させることができます。
例えば「news_cat」というカスタムタクソノミーの場合はそれぞれ下記のように記述します。

PHP

// the_post_navigation()
the_post_navigation(
  array(
    'in_same_term' => true,
    'taxonomy' => 'news_cat',
  )
);

// previous_post_link()
previous_post_link( '%link', '%title', true, '', 'news_cat' );

// next_post_link()
next_post_link( '%link', '%title', true, '', 'news_cat' );

ここで紹介したのはいずれもとりあえず表示させるといった簡易的な方法になるので、表示されるコードを自分好みにカスタマイズしたいとかであれば、get_the_post_navigation(), get_previous_post_link(), get_next_post_link()を使用してください。

Close the search window,
please press close button or esc key.