親・子・孫など3階層以上のカテゴリがあり、そのすべてのカテゴリオブジェクトを取得したかったので、指定したカテゴリから親カテゴリまでのすべてのカテゴリオブジェクトを取得してくれる再帰的処理な関数を作りました。
/** * カテゴリオブジェクトを再帰的に取得 */ if (! function_exists('category_recursive')): function category_recursive($obj, $cats = array()){ $cats[] = $obj; if($obj->category_parent > 0){ $obj = get_category($obj->category_parent); return category_recursive($obj, $cats); }else{ return $cats; } } endif;
上記関数を以下のように使えば、親子関係のあるすべてのカテゴリオブジェクトが取得できます。
// カテゴリオブジェクトを取得 $cat = get_the_category($post->ID); $cat = $cat[0]; // 親子関係のあるカテゴリオブジェクトをすべて取得 $cats = category_recursive($cat); print_r($cats);