WordPressのカテゴリ一覧に子カテゴリー一覧を表示させる方法

サイドバーには親カテゴリーだけ表示させ、カテゴリーページの上部に子カテゴリを表示させたかったのでやってみました。


サイドバーにカテゴリがずらずら有るのが嫌だった

今まで心のままにカテゴリーを増やしていたのですが、サイドバーに出てくるカテゴリーが多すぎで場所取りすぎ&カッコ悪いと感じるようになりました。

カテゴリーが多い

そんなもんで最近カテゴリーの整理をしてまして、ちゃんと親カテゴリを作りその配下に子カテゴリを作ってカテゴライズしたんですよ。まぁ、まだまだ多い気がしますが・・・前よりは全然減りました。

※余談ですが、僕のパーマリンク設定には/category/が入っていたので、このカテゴリ整理でURLが変わってしまって検索に影響が出ました。後々カテゴリ整理が出来るようにパーマリンク設定にはカテゴリーは入れない方が良いなと思いました。

で、カテゴリーは減ったのですが、子カテゴリーもどこかに出したいなと思い、カテゴリー一覧の上部に設置してみたという訳でございます。

カテゴリ一覧に子カテゴリー一覧を表示させる方法

カテゴリ一覧に子カテゴリー一覧を表示

表示させるのはこんな感じ。子カテゴリを投稿数付きで出してみました。

親カテゴリの場合だけ表示させる条件分岐

子カテゴリの場合はこの表示はいらないので、親カテゴリだけという条件分岐を書く。まずはグローバル変数の$catからカテゴリIDを元にget_category_children()関数を使って子カテゴリを引っ張り、条件分岐させる。

表示中の親カテゴリーから子カテゴリを抽出

次に、category.phpで表示中の親カテゴリースラッグから子カテゴリを抽出。親カテゴリーのスラッグをまたまたグローバル変数の$category_nameを元にget_category_by_slug()関数を使ってカテゴリIDを引っ張る。

あとはカテゴリIDをget_categories()のchild_ofで指定してあげれば該当の子カテゴリが出てくるのでそれをforeachで回せばOK。

で、完成品がこちら。

僕の環境では動いているので大丈夫そうですが、何か問題orこう書いた方がいいよみたいなのが有ればコメント欄で教えて頂けると幸いです。