【WP】特定の親カテゴリに所属する全ての子カテゴリの最新記事一覧を作る方法

CATEGORY : column

【WP】特定の親カテゴリに所属する全ての子カテゴリの最新記事一覧を作る方法

特定の親カテゴリに所属する全ての子カテゴリの最新記事一覧を作る方法

意外と融通の効かないWPのカテゴリ構成

今回はワードプレス関連の記事になります。WP案件の中で、右の画像のようなカテゴリ構成の状態で親カテゴリID1とID5は別ページで、それぞれのページで所属している子カテゴリ含めてそのカテゴリの新着情報一覧を作成しようとしていました。もしかするとプラグインで同等の事がサクっと出来てしまうかもしれませんが、公式でない場合マルウェアに感染するリスクや他のプラグインとの相性なども有るため今回はphp手書きでの対応の紹介となります。

カテゴリーサンプルイメージ

早速、親カテゴリID1の最新記事一覧を作っていきます。出力の際に「日時」「カテゴリ名」「タイトル」といった具合に出力し「カテゴリ名」は所属する親カテゴリ名で出力しようと思っています。右のイメージは完成図です。

完成予想図

それならば、query_posts()で子カテゴリのIDを指定して出力すればいいか。と深く考えずにコーディングしてしまいました。

しかし、よくよく考えるとこの方法だと後々子カテゴリが増えた時に手動対処しなくちゃならない訳で あまり使い勝手が良くないと思い何とか動的に出来ないものかと試行錯誤・・・

get_term_children()で子カテゴリを取得して出力

「親カテゴリ 子カテゴリ 取得」 と検索をかけると色々出てきました。get_term_children()で親カテゴリを指定してその親カテゴリに所属する、子カテゴリを取得することが出来ると知り 早速コーディング。

さあ、早速出力結果を確認だ!!と意気揚々とブラウザを見ると・・・。
「あれ?・・・なんか表示件数が少ないぞ・・・」
右のイメージは出力された結果のキャプチャです。よくよく見ると親カテにのみチェックが入っている記事(ID1に属する記事)が出ていない模様。

親カテゴリのみにチェックが入っている記事が表示されていないイメージ

get_term_children()で取得できるのは子カテゴリのみ

なんとget_term_children()では指定された子カテゴリの情報が取得出来るだけで、その親カテまでは取得出来ない模様。 それなら親カテのidを付け足せばいい訳で、

ようやく希望通りの出力になりました。これで子カテゴリが増えても問題なし!!