閉じる

技術ブログ

親子カテゴリーのあるデフォルト投稿のページネーションの特殊動作

2023.07.03
WP

WordPressで親子カテゴリーのあるデフォルト投稿のページネーションの特殊動作

デフォルト投稿において、親カテゴリと子カテゴリーの両方を選択した場合、前後の記事へのリンクを子カテゴリに絞ってリンクすることができるか、という特殊なパターンの動作について検証してみました。

子カテゴリに絞ってリンクすることは可能か?

結論から記載すると、「次へ」「前へ」のテンプレートタグ「previous_post_link」「next_post_link」のパラメータを設定する事で可能です。
※但し、あくまで子カテゴリーが1つの場合の前提で以下記載します。

ポイントとしては、テンプレートタグの以下2つのパラメータを設定する事で、子カテゴリに絞ったリンクが可能になります。

  • $in_same_term -> true
  • $excluded_terms -> 背反カテゴリーID

$in_same_termで、現在の投稿と同じタクソノミー・ターム(例:カテゴリー)の投稿に限定するかどうか設定できますが、現在の投稿に 2 つ以上のターム(例:親と子の両方)がついていた場合、どのタームがついた投稿へリンクするかは選べません。その為、$excluded_termsで該当タームID以外を設定する事で、目的の動きを達成させています。

実際の実装例

検証で作成した実際の実装箇所の実装例が以下になります。
背反カテゴリーIDは、$diff_arrayで作成しました。また「previous_post_link」の場合だと、以下23行目で上記2つのパラメータ設定をしてあります。

複数の子カテゴリーが選択された場合も、リンクさせる事は可能か?

上記で、1つの子カテゴリーでリンクさせる事はできました。但し、複数の子カテゴリーにチェックが入っていると、実装不可能ではないものの、めちゃくちゃな事になり、そもそも実装自体も無意味と思われる為、1つの子カテゴリーでの実装の検証までとします。

参考記事