【WordPress】特定のカテゴリーを除外する時のID指定を自動化してみる

 

 Web技術

投稿記事ページ(single.php)で記事の最後に
「前の記事」「次の記事」のリンクを設置する場合がありますが
それぞれのカテゴリー記事内でのみリンクしたい。

ということが多いかと思います。

上の例のような単純なカテゴリーであれば
Wordpressのタグ「previous_post_link」と「next_post_link」を使用して

●single.php

でそれぞれのカテゴリーのみの記事内でリンクされますが


このように子カテゴリーを作って

  • 新着情報はお知らせとイベントの記事内でのリンク
  • ブログは日常と仕事の記事内でのリンク
  • 制作実績はWEBと印刷の記事内でのリンク

となってしまうと
条件分岐と除外するカテゴリーIDを指定していかなければなりません。

●function.php

●single.php

まだ分岐は仕方ないとしても…

除外するカテゴリーIDを1つ1つ記述しなければならず面倒…(つд)

また新たな子孫カテゴリーを作るとその度に追記しなければなりません…(つд)(つд)

仮に子孫カテゴリーが100カテゴリーとかあったとしたらもう…(つд)(つд)(つд)

…と前回と似たようなお話になりますが(前回は固定ページ)w

親カテゴリーと、その子孫カテゴリーを取得して
除外する時のID指定を自動化できないか調べてみました。

① 記事の最上層カテゴリーとその子カテゴリーのIDを取得する

categories_numは

  • 新着情報(お知らせ・イベント)の記事ならばID「1,2,3」
  • ブログ(日常・仕事)の記事ならばID「4,5,6」
  • 制作実績(WEB・印刷)の記事ならばID「7,8,9」

を取得します。

② ①で取得したカテゴリー以外のカテゴリーIDを文字列ですべて取得する

①のcategories_numをget_categories(カテゴリー情報を取得)の
excludeで除外してforeach文を使用してそれ以外のカテゴリーのIDをすべて取得します。

categories_num_exは

  • 新着情報(お知らせ・イベント)の記事ならばID「4,5,6,7,8,9」
  • ブログ(日常・仕事)の記事ならばID「1,2,3,7,8,9」
  • 制作実績(WEB・印刷)の記事ならばID「1,2,3,4,5,6」

を取得します。

除外するカテゴリーIDが取得できました。

③ 「previous_post_link」と「next_post_link」に記述する

②のcategories_num_exを「previous_post_link」と「next_post_link」に記述して除外指定の完成です。

まとめ

●single.php

分岐の記述の必要もなくカテゴリー除外の自動化できました(`▽´)

「除外する」ではなく「(子孫を)含む」という指定ができれば良いんですけどね~(;´・ω・)

 


▼参考にさせていただきました。ありがとうございました。

 この記事の投稿者

taka

Webサイト作ってます。
最近のモットー「決して無理をしないスタイル」

twitter: @taka_sbs

  • このエントリーをはてなブックマークに追加
  • 0 follow us in feedly

ページ最上部へ