【WordPress】投稿の子カテゴリーのみ・親カテゴリーのみを取得・表示する例

今回は、WordPressで現在の投稿に設定しているカテゴリーの中で、以下の2種類のカテゴリーを、それぞれリンク付きで表示する例となります。

  • 最上層の親カテゴリーのみを表示する例
  • 最下層の子カテゴリーのみを表示する例

また、今回の例ではカテゴリーの情報を取得する際、カテゴリーのオブジェクトを取得できるget_the_category()を使用します。

投稿の親カテゴリー(最上層)のみを取得し表示する例

以下は、get_the_category()を使い、現在の投稿に設定している最上層の親カテゴリーをリンク付きで表示する例となります。

ソースコードは投稿内で親カテゴリー名を表示したい場所に記述します。

<?php
$categories = get_the_category();
foreach( $categories as $category ){
	// 親カテゴリーIDを取得
	$parent = $category->parent;
	// 親カテゴリーIDがない場合
	if( !$parent ){
		echo '<div><a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></div>';
		break;
	}
}
?>

上記例では、get_the_category()から取得した親カテゴリーのIDを利用し、条件分岐で最上層の親カテゴリーを判断し表示しています。

また、最上層の親カテゴリーが2つ以上ある場合には、get_the_category()で最初に取得したカテゴリーのみを表示します。

投稿の子カテゴリー(最下層)のみを取得し表示する例

以下は、get_the_category()・get_term_children()を使い、現在の投稿に設定している最下層の子カテゴリーをリンク付きで表示する例となります。

ソースコードは投稿内で子カテゴリー名を表示したい場所に記述します。

<?php
$categories = get_the_category();
foreach( $categories as $category ){
	// カテゴリーIDを取得
	$cat_id = $category->term_id;
	// 子孫タームのIDを配列で取得
	$cat_child = get_term_children( $cat_id, 'category' );
	// 子孫タームのIDがない場合
	if( !$cat_child ){
		echo '<div><a href="' . get_category_link( $id ) . '">' . $category->name . '</a></div>';
		break;
	}
}
?>

get_term_children()は、引数に指定したタクソノミーのタームIDのタームが子孫を持つ場合、子孫のタームIDを配列ですべて返します。

上記例では、そのget_term_children()の戻り値を利用し、条件分岐で最下層の子カテゴリーを判断し表示しています。

また、最下層の子カテゴリーが2つ以上ある場合には、get_the_category()で最初に取得したカテゴリーのみを表示します。

get_the_category()について

get_the_category()の詳細については、以下のリンク先を参考にしてみてください。

参考サイトなど

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はこちらから。

また、コメントは承認制となります。