ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

親カテゴリは出力せずに子カテゴリ名だけ出力する@WordPress

親カテゴリ名は表示せず、子カテゴリ名だけを出力する例です。テンプレートはcategory.phpです。(どのテンプレートでも実現出来るwp_list_categoriesタグを使ったやり方は後述します)

どういうときに使えるかというと、例えば建築施工会社さんのサイトで、事例タイプがいくつかあり、そのいずれかに分類される施工の案件、現場(○○邸とか)があったとします。

新築物件
└A様邸
└B様邸

リフォーム
└C様邸
└D様邸

事例タイプ(例えば新築物件とか、リフォームとか)は各現場の関係性を持たせるために利用しているだけなので(関連物件、案件などで)親カテゴリ名は必要とせず、子カテゴリ名の「現場名」だけを表示させたいと。実際にあった依頼です。

前置きが長い割にコードは短いのですが、以下になります。

<?php
    $cats = get_the_category();
    foreach($cats as $cat):
    if($cat->parent) echo $cat->cat_name;
    endforeach;
?>

get_the_category()関数を使ってforeachで回してますが、これ、どこでどう調べてこの記述になったのか記憶が定かでありません。なんでこれで子カテゴリ名だけを出力できているんだろう?実際出来ているんですが。

テンプレートタグwp_list_categoriesを使う

こちらはもっと分かりやすいです。カテゴリーリストを出力するwp_list_categoriesにオプションを指定するやり方です。

wp_list_categoriesは(どこで呼び出しても)デフォルトは全カテゴリーリストを表示します。

<?php wp_list_categories('child_of=1&title_li='); /* 親カテゴリは除外 */ ?>

「child_of」で除外したい親カテゴリをIDで指定します。(title_li=は、不要な文字出力を無効化してます)

カテゴリIDはそのカテゴリの編集画面に進み、ブラウザのURLにある「category&tag_ID=」で示されている数字です。

この数字(カテゴリID)をchild_of=で指定すると、そのカテゴリ(親)は除外して、その子カテゴリ以下(孫があれば孫も)を出力してくれます。

crypto.showzine.co