カテゴリIDでカテゴリ情報を取得したい!get_categoryを使ってみたけどパラメーターの与え方やプロパティがよく分からない

投稿用キャラクタ

そんな疑問にお答えします。

この記事ではget_categoryの使い方を詳しく解説していきます。記事の前半ではパラメーターの与え方やプロパティの意味、戻り値などを分かりやすく解説します。

記事の後半ではコードの使い方やよくある使用例を記述するので初めて使う方でもすぐにマスターできます。

get_categoryの使い方

基本的なget_categoryの使い方をみていきましょう。get_categoryはパラメーターが3つあり$category, $output, $filterがあります。必須のパラメーターは$categoryでカテゴリIDかカテゴリオブジェクトを指定します。

取得できるカテゴリオブジェクトはget_the_categoryと同様の形になっています。

【WordPress】カテゴリを取得できるget_the_categoryの使い方

get_categoryの記述方法

具体的なget_categoryの記述方法としてコード例を記述します。

<?php get_category( $category, $output, $filter ); ?>

使用用途によって異なりますが、カテゴリIDを指定して特定のカテゴリ情報を取得するだけなら必須パラメーターの$categoryだけ指定する形になるかと思います。

パラメーター

パラメーター データ型 内容
$category 整数orオブジェクト カテゴリーIDまたはカテゴリー行オブジェクト
$output 文字列 定数 OBJECT、ARRAY_A、ARRAY_Nのいずれか
$filter 文字列 デフォルト(’raw’)では WordPress が予め定義したフィルターはどれも適用されません。
右にスクロールできます。

戻り値

戻り値は以下のような形になります。カテゴリIDは単数の指定なので戻り値も単数のオブジェクトになります。カテゴリIDを指定してカテゴリを複数取得したい場合はget_categoriesを使います。

object(WP_Term)#5752 (16) {
  ["term_id"]=>
  int(1)
  ["name"]=>
  string(13) "Uncategorized"
  ["slug"]=>
  string(13) "uncategorized"
  ["term_group"]=>
  int(0)
  ["term_taxonomy_id"]=>
  int(1)
  ["taxonomy"]=>
  string(8) "category"
  ["description"]=>
  string(0) ""
  ["parent"]=>
  int(0)
  ["count"]=>
  int(202)
  ["filter"]=>
  string(3) "raw"
  ["cat_ID"]=>
  int(1)
  ["category_count"]=>
  int(202)
  ["category_description"]=>
  string(0) ""
  ["cat_name"]=>
  string(13) "Uncategorized"
  ["category_nicename"]=>
  string(13) "uncategorized"
  ["category_parent"]=>
  int(0)
}

戻り値の解説

プロパティ名 データ型 解説
term_id 整数 カテゴリーID
name 文字列 カテゴリー名
slug 文字列 カテゴリーのスラッグ
term_group 文字列 カテゴリのーグループ
term_taxonomy_id 整数 カテゴリーのタクソノミーID
taxonomy 文字列 タクソノミー名
parent 整数 親カテゴリーのID
count 整数 カテゴリーに登録されている投稿の数
filter 文字列 フィルタ名
cat_ID 整数 カテゴリーID
category_count 整数 カテゴリーに登録されている投稿の数
category_description 文字列 カテゴリーの説明
cat_name 文字列 カテゴリー名
category_nicename 文字列 カテゴリースラッグ名 – カテゴリー名から生成されたスラッグ
category_parent 整数 親カテゴリーの ID – 親がなければ 0 が入る
右にスクロールできます。

WordPress Codexにはサンプルコードは記載されていませんでしたが実際に使われそうなコードをサンプルコードとして記述していきます。

指定したカテゴリーのカテゴリID、スラッグ、カテゴリ名を取得

<?php
	$category = get_category( get_query_var( 'cat' ) ); //カテゴリーアーカイブページでカテゴリIDを取得
	
	echo $category->term_id; //現在のカテゴリーIDを出力
	echo $category->name;  //現在のカテゴリー名を出力
	echo $category->slug; //現在のカテゴリースラッグを出力
?>

get_query_varは他のページで’cat’を取得できません。つまり他のページでカテゴリIDを取得する場合はget_the_categoryなど、別の方法で取得する必要があります。

出力例

61 子カテゴリ child

カテゴリID、カテゴリ名、スラッグをそれぞれ出力しました。

投稿ページカテゴリの親カテゴリの情報を取得

get_the_categoryのページでも紹介しましたが、投稿ページでget_the_categoryを使って所属しているカテゴリを全て取得後、先頭のカテゴリから親のカテゴリIDを取得しget_categoryでカテゴリ情報を取得しています。

<?php 
	  $categories = get_the_category(); 
	  $parent_cat_id = $categories[0]->parent;
	  $parent = get_category($parent_cat_id);  
?>

意点としては$categories->parentとした時に既に親カテゴリだった場合はカテゴリIDではなく0が入ってくるのでif文などを使って分岐しエラーが出ないようにしましょう。

取得内容

object(WP_Term)#5714 (16) {
    ["term_id"]=>
    int(1)
    ["name"]=>
    string(13) "Uncategorized"
    ["slug"]=>
    string(13) "uncategorized"
}

slug以降も取得できますが、戻り値と同様なので省略させていただきました。

まとめ

get_categoryの使い方をご紹介しました。カテゴリIDで単体のカテゴリ情報を取得する場合はget_category、複数系はget_categoriesを使います。カテゴリIDではなく投稿IDから取得する場合はget_the_categoryを使いましょう。