カテゴリを取得して関連記事やcategory.phpなどで表示したい。WordPress Codexをみてもいまいちget_the_categoryの使い方が分からない

といった方のために今回はこの記事で解説多めにget_the_categoryの使い方を解説していきます。
パラメータの解説から実際の出力内容も載せるのでより具体的に取得したい内容をイメージできるかと思います!
このページの目次
get_the_categoryの使い方
まずはget_the_categoryの使い方をみていきましょう。get_the_categoryはパラメーターに投稿IDを指定しカテゴリーのオブジェクトを取得するテンプレートタグです。具体的な使い方は以下で順番に解説していきます。
get_the_categoryの記述方法
get_the_categoryのパラメーターは投稿IDだけのシンプルなテンプレートタグです。パラメーターを省略した場合は初期値である$post->IDが入ります。ループの外では必ず投稿IDを指定しましょう。
<?php get_the_category( $id ); ?>
パラメーター
パラメーター | 内容 |
---|---|
$id | (整数) (オプション) 投稿 ID。 |
戻り値
戻り値は以下の形になります。
array(1) {
[0]=>
object(WP_Term)#5717 (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(201)
["filter"]=>
string(3) "raw"
["cat_ID"]=>
int(1)
["category_count"]=>
int(201)
["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
$categories = get_the_category();
echo $categories[0]->term_id; //現在のカテゴリーIDを出力
echo $categories[0]->name; //現在のカテゴリー名を出力
echo $categories[0]->slug; //現在のカテゴリースラッグを出力
?>
出力内容
61 子カテゴリ child
それぞれの値が出力できました。半角スペースは実際には出力されません。
全てのカテゴリ名を取得
属している全てのカテゴリ名を取得する方法です。
<?php $categories = get_the_category();
if($categories) {
foreach($categories as $categorie) {
$output .= $categorie->name;
}
echo $output;
}
?>
「$categorie->name」の部分でプロパティ名を指定しているので例えば「$categorie->slug」とするとスラッグが取得できます。
出力内容
子カテゴリ親カテゴリ
親カテゴリのオブジェクトだけを取得
親カテゴリを取得する場合は$categorie->parentにアクセスしカテゴリー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)#5719 (16) {
["term_id"]=>
int(62)
["name"]=>
string(15) "親カテゴリ"
本来はカテゴリ名以降ももちろん取得できますが、長くなってしまうので省略しました。
ループ外でカテゴリ情報を取得
ループの外でカテゴリ情報を取得する場合は以下のコードになります。
<?php
global $post;
$categories = get_the_category( $post->ID );
var_dump( $categories );
?>
取得例
前回の取得例と同様name以降は省略しています。
array(2) {
[0]=>
object(WP_Term)#5754 (16) {
["term_id"]=>
int(61)
["name"]=>
string(15) "子カテゴリ"
}
[1]=>
object(WP_Term)#5719 (16) {
["term_id"]=>
int(62)
["name"]=>
string(15) "親カテゴリ"
}
}
まとめ
カテゴリを取得できるget_the_categoryの使い方を解説しました。投稿ページでのカテゴリ取得はget_the_categoryが多いと思いますので使い方を抑えておきましょう。またカテゴリIDからカテゴリ情報を取得する場合はget_categoryを使いましょう!