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

そんな疑問にお答えします。
この記事ではget_categoryの使い方を詳しく解説していきます。記事の前半ではパラメーターの与え方やプロパティの意味、戻り値などを分かりやすく解説します。
記事の後半ではコードの使い方やよくある使用例を記述するので初めて使う方でもすぐにマスターできます。
このページの目次
get_categoryの使い方
基本的なget_categoryの使い方をみていきましょう。get_categoryはパラメーターが3つあり$category, $output, $filterがあります。必須のパラメーターは$categoryでカテゴリIDかカテゴリオブジェクトを指定します。
取得できるカテゴリオブジェクトは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を使いましょう。