カテゴリを取得して関連記事や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を使いましょう!

【WordPress】個別のカテゴリを取得するget_categoryの使い方

【WordPress】個別のカテゴリを取得するget_categoryの使い方