WordPressで構築されたブログやメディアでよく見かける詳細ページで前後記事へのリンクを設置の際に、単純な前後記事へのリンクではなく現在表示しているカテゴリーやタグと同じものが設定されている記事へのリンクを表示させる方法です。
in_same_termを使う
ここでは前後の記事リンクを表示させるために全部で3種類の関数を用いた方法を紹介していますが、先に結論から言うといずれも基本的に$in_same_term
というオプションを利用することで実装できます。
the_post_navigation()
は前後両方の記事へのリンクを表示させたい場合、previous_post_link()
は前の記事へのリンクを表示させたい場合、next_post_link()
は次の記事へのリンクを表示させたい場合になります。
同じカテゴリー(投稿)
デフォルトの投稿にあるカテゴリーを利用している場合は、下記のようにそれぞれ$in_same_term
をtrue
にするだけで実装でき、previous_post_link()
とnext_post_link()
の場合は第3引数をtrue
にします。
// 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引数に値を記述します。
// 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_term
のtrue
指定と該当のタクソノミーを指定することで表示させることができます。
例えば「news_cat」というカスタムタクソノミーの場合はそれぞれ下記のように記述します。
// 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()
を使用してください。