[wordpress]親のカテゴリの情報を取得するには?

wordpress

久々にWordpressを触ることになったので、驚いてます(笑)

今回やってみようと思ったことは、その記事の親のカテゴリーの情報を取得して画像の表示を切り分けようてことをしたいと思っています。

割と親カテゴリの情報を取得することもありそうなのでメモ。

親カテゴリの情報を取得する

とりあえず、phpのコードを記載して順に説明していきます。


	$cat_now = get_the_category(); // 現在の記事のカテゴリー情報を取得
	$cat_now = $cat_now[0]; // 最初のカテゴリー情報のオブジェクト
	
	if($cat_now->parent){
		$parent_info=get_category($cat_now->parent); //親のカテゴリ情報を取得
		
		//親のカテゴリー名
		$name=$parent_info->name;
		
		//親のカテゴリーのスラッグ名
		$slug=$parent_info->slug;
	}

get_the_categoryで表示している記事のカテゴリ情報を取得する

get_the_category関数は現在表示している投稿データのカテゴリー情報を取得する取得する関数で引数は必要ないです。

カテゴリーの情報は配列に格納されて返されるので、現在のカテゴリのオブジェクトにアクセスするには添字で「0」でアクセスでき、そのオブジェクトのメンバ変数にアクセスすることで情報を取得できます。例えばカテゴリ名なら「name」で取得できます。

上記の場合は「parent」で親のカテゴリIDを取得する変数ですが、もし親のカテゴリが存在しない場合は「0」を返すので、if文で親のカテゴリが存在するかチェックしています。

そのほかにカテゴリー情報のメンバ変数知りたい場合は下記のサイトが詳しく書いてあります。

get_categoryで親のカテゴリ情報を取得する

現在のカテゴリに親カテゴリが存在するかチェックした後は親のカテゴリー情報を取得するためにget_category関数を利用して親のカテゴリー情報を取得します。

get_categoryは指定したIDのカテゴリ情報を取得できる関数なので引数に「parent」で、親のカテゴリIDを指定することで、親カテゴリ情報を取得することが出来ます。

親のカテゴリ情報を取得したら、後はメンバ変数でカテゴリー名は「name」、スラッグ名は「slug」などにアクセスすれば取得できます。

ただ取得できるの直接の親のみなので、例えば「親→子→孫」のように孫から親のカテゴリ情報を取得する方法ではありません。

get_the_categoryとget_categoryとの違いは?

二つの関数は似ているんですが、似てるようで違います。

get_the_category 投稿データのカテゴリー情報を取得する
get_category IDを指定してカテゴリー情報を取得する。

というようにget_the_categoryは特に引数も必要なくカテゴリ情報を取得できますが、get_categoryはIDまたはカテゴリ情報のオブジェクトを指定してあげる必要があります。
ですので、任意のIDのカテゴリ情報が取得したい場合はget_categoryを利用するといいと思います。下記を参考にしてください。