次と前の記事を同じタグのみに指定する

はじめに
現状、日付順になっている。
そのため、Railsの記事の前に、自分の考えの記事が来ている。

これをRailsの記事に限定したい。
変更前のソースコード
前と次のナビゲーションは以下のように表示させていた。41行目のcomments_template()は、if文の前に持ってきた方がよかった。今後の改修対象だ。

get_adjacent_post
get_adjacent_postは、4つの引数を持つ。

変更前のソースコードでは、以下のように指定していた。第一引数がfalseなので、同じタームの記事に限定して取得していない。タームというのは、雑記ブログというカテゴリーがあったとしたら、雑記ブログのこと。第二引数は空なので、対象外とするタームを指定していない。第三引数は、パラメータの定義のままで、前の記事のprevがtrueで、次の記事のnextがfalse。第四引数は指定していない。

変更後のソースコード

37、38行目に注目していただきたい。get_adjacent_postに渡す引数を変更した。第一引数はfalseからtrueにしたので、同じタームの記事に限定して取得するようになった。第四引数にpost_tagを指定したので、タクソノミーがタグになった。

投稿のタグのスラッグは、tagではなくpost_tagなので、注意が必要だ。管理画面のタグページのURLに、「taxonomy=post_tag」書いてある。

意図した通りの結果になった
例えば、2024年夏の青春18きっぷというタグを持つ以下の記事は、前後の記事が同じタグがついているページになっている。
青春18きっぷ 2024夏 2回目 第二章 亀山到着、奈良方面へ

この記事の前のナビゲーションには、WordPressのタグが付いた記事が表示されている。
今後、WordPressというタグを付けた記事が公開されたら、次の記事のナビゲーションが追加される。
コメントを残す