【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()の詳細については、以下のリンク先を参考にしてみてください。