get_the_category()から子カテゴリーを取得する

get_the_category()からカテゴリーを取得するにはforeach文で抜き出すことができます。次のコードは子カテゴリーまで抜き出し、各カテゴリーページのリンクと各カテゴリー名を抜き出したコードになります。

サンプルコード

$categories = get_the_category();
foreach($categories as $cat){
	echo '<li><a href="' . get_category_link($cat->term_id) . '">' . $cat->name . '</a></li>';
}

get_the_category() – 配列展開

get_the_category()の中は下記のようになっています。多次元配列の構造は親カテゴリーから順に[0] > [1] > [2]となります。

array(2) {
  [0]=>
  object(WP_Term)#4693 (16) {
    ["term_id"]=>
    int(150)
    ["name"]=>
    string(8) "Parent"
    ["slug"]=>
    string(8) "parent"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(150)
    ["taxonomy"]=>
    string(8) "category"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    int(0)
    ["count"]=>
    int(7)
    ["filter"]=>
    string(3) "raw"
    ["cat_ID"]=>
    int(150)
    ["category_count"]=>
    int(7)
    ["category_description"]=>
    string(0) ""
    ["cat_name"]=>
    string(8) "Parent"
    ["category_nicename"]=>
    string(8) "parent"
    ["category_parent"]=>
    int(0)
  }
  [1]=>
  object(WP_Term)#4781 (16) {
    ["term_id"]=>
    int(162)
    ["name"]=>
    string(5) "Child"
    ["slug"]=>
    string(5) "child"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(162)
    ["taxonomy"]=>
    string(8) "category"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    int(150)
    ["count"]=>
    int(5)
    ["filter"]=>
    string(3) "raw"
    ["cat_ID"]=>
    int(162)
    ["category_count"]=>
    int(5)
    ["category_description"]=>
    string(0) ""
    ["cat_name"]=>
    string(5) "Child"
    ["category_nicename"]=>
    string(5) "child"
    ["category_parent"]=>
    int(150)
  }
}

カテゴリーのリンクを取得したいのであればget_category_link()term_idが必要になります。get_categroy_link()に値(カテゴリーID)が入れることでURLを返してくれます。上記の例だとget_category_link(150)となるのでParentのカテゴリーアーカイブページのリンク(URL)を取得できます。

ただこのタグは現在の投稿が属するカテゴリーを表示させる機能がメインなので、get_the_category()タグを使う場合single.phpで使うほうが相性がいいかなと思いました。get_the_category()から子カテゴリーを取得する