[WordPress] 現在のカテゴリー名とその直近の子カテゴリーリストを表示する

 2016.05.11  2017.10.05

カテゴリーページ(category.php)で、「現在表示しているカテゴリーに子カテゴリーがあればリンク付き子カテゴリー名を表示、なければ何も表示しない」という設定を、get_cateogryやget_categoriesを使って実現してみます。

例えば下の画像のように、現在表示しているカテゴリー名の下に直近の子カテゴリーのリンクを表示させたい場合などに使えます。

Aは子カテゴリーのリンクをテキストで表示、Bは子カテゴリーへのリンクと画像を表示させてカテゴリーのインデックスページのような役割を持たせたりすることもできますね。Bで表示する画像は、アイキャッチ画像やカスタムフィールドで登録した画像を引っ張ってくるイメージです。

カテゴリー例:

  • レディースファッション
    • トップス
    • ボトムス

child_cat

サンプルコード

簡単な解説

現在表示しているカテゴリーの名前を表示させます。上記の画像の例だと「レディースファッション」です。関数get_categoryについては「get_categoryとget_the_categoryの違いについて」で詳しく書いています。

パラメーターを指定します。「parent」は、指定したカテゴリーIDの直接の子カテゴリーを取得します。孫カテゴリーがあっても、直近の子カテゴリーのみです。全ての子孫カテゴリーを取得したい場合は「child_of」を使います。カテゴリーページでは$catには現在表示しているカテゴリーIDが入りますので、「現在表示しているカテゴリー(ID)の直近子カテゴリーを取得せよ」という命令になっています。

先ほど指定したパラメーターでカテゴリー情報を取得し、$catChildrenに格納します。子カテゴリーがあれば、$catChildrenに子カテゴリーの情報が配列で入ります。get_cateogiresの代わりに、get_terms(‘category’ $arg)でも同じように取得できました。

後は「子カテゴリーがある場合」に表示する条件分岐を書き、子カテゴリーの配列から要素を一つずつ取り出して「get_category_link()」でカテゴリーリンクを、「$catChild -> name」で子カテゴリー名を取得して表示させます。

使用関数