Webテクニック

WEB TIPS

WordPressで投稿記事の親カテゴリーや祖先カテゴリー情報を表示させる

WordPressで投稿記事の親カテゴリーや祖先カテゴリー情報を表示させる

WordPressでは、記事のカテゴリー情報を取得する方法が色々あります。
今回は、普段よく使っている親カテゴリーや祖先カテゴリーを取得する方法をまとめてみました。

現在の記事が属するカテゴリーを取得する

まずは、基本的なカテゴリー情報の取得方法です。

<?php
$cats = get_the_category(); //現在のカテゴリーを取得
$cat = $cats[0]; //複数カテゴリーに属している場合は、最初のカテゴリー情報を取得
echo $cat->cat_ID; //カテゴリーIDを表示
echo $cat->cat_name; //カテゴリー名を表示
echo $cat->category_nicename; //スラッグを表示
?>

上記の方法では、記事が複数のカテゴリーに属している場合、カテゴリーIDが一番小さいカテゴリーしか取得できません。
全てのカテゴリーを表示する場合は、以下の方法で取得できます。

<?php
$cats = get_the_category();
foreach($cats as $cat){
  echo $cat->cat_ID; //カテゴリーIDを表示
  echo $cat->cat_name; //カテゴリー名を表示
  echo $cat->category_nicename; //スラッグを表示
}
?>

記事の親カテゴリーを取得する

直接の親にあたるカテゴリーを取得する場合は、parentを使用して取得できます。
以下の例では、もし親カテゴリーがない場合は現在のカテゴリーを表示するようにしています。

<?php 
$cats = get_the_category(); //現在のカテゴリーを取得
$cat = $cats[0];

if( $cat->parent ){ //親カテゴリの場合
  $parent = get_category( $cat->parent );
  echo $parent->cat_ID; //カテゴリーIDを表示
  echo $parent->cat_name; //カテゴリー名を表示
  echo $parent->slug; //スラッグを表示
} else {
  echo $cat->cat_ID; //カテゴリーIDを表示
  echo $cat->cat_name; //カテゴリー名を表示
  echo $cat->slug; //スラッグを表示
}
?>

記事の祖先カテゴリーを取得する

次に、2階層以上あるカテゴリーに属している場合に直接の親カテゴリーでなく、最上位のカテゴリー(祖先カテゴリー)を表示したい場合があるかと思います。

カテゴリーアーカイブページで表示する場合

カテゴリーページにて、最上位のカテゴリーであればそのカテゴリー名を表示。祖先カテゴリ―がない場合は、親カテゴリーのカテゴリー名を表示する場合の例をあげてみます。

<?php
$cat = get_queried_object(); //カテゴリーオブジェクトを取得
$catParent = $cat->parent; //親カテゴリーのID(なければ0)
 
if( !$catParent ){ //現在のページが最上位のカテゴリーなら
  echo $cat->cat_ID; //現在のカテゴリーIDを表示
  echo $cat->cat_name; //現在のカテゴリー名を表示
  echo $cat->slug; //現在のスラッグを表示
} else { //祖先カテゴリーを表示するなら
  $ancestor = array_pop(get_ancestors( $cat->cat_ID, 'category' )); //配列の一番最後の値(一番上のカテゴリーID)を取得
  echo $ancestor; //カテゴリーID表示
  echo get_cat_name($ancestor); //カテゴリー名表示
  echo get_category($ancestor) -> slug; //スラッグ表示
}
?>

投稿記事で表示する場合

投稿記事の場合は、複数のカテゴリーに属している場合があるので、初めの1つを取り出してから親カテゴリーを取得します。

<?php
$cats = get_the_category($post->ID); //現在の投稿記事のIDからカテゴリー情報を取得
$cat = $cats[0]; //複数カテゴリーに属している場合は、最初のカテゴリー情報を取得
$catParent = $cat->parent; //親カテゴリーのID(なければ0)
 
if( !$catParent ){ //現在のページが最上位のカテゴリーなら
  echo $cat->cat_ID; //現在のカテゴリーIDを表示
  echo $cat->cat_name; //現在のカテゴリー名を表示
  echo $cat->slug; //現在のスラッグを表示
} else { //祖先カテゴリーを表示するなら
  $ancestor = array_pop(get_ancestors( $cat->cat_ID, 'category' )); //配列の一番最後の値(一番上のカテゴリーID)を取得
  echo $ancestor; //カテゴリーID表示
  echo get_cat_name($ancestor); //カテゴリー名表示
  echo get_category($ancestor) -> slug; //スラッグ表示
}
?>

今回ご紹介した方法以外にも親カテゴリーや祖先カテゴリーを取得する方法はあります。
また、カテゴリーをリスト化して表示する方法などもありますので、色々と検索してみてください。

Contactお問い合わせ・お見積り

ホームページ制作のご相談、お見積りのご依頼、Web制作に関するご不明点などお気軽にお問い合わせください。

新規のご依頼は2021年09月制作スタート

まずは無料見積り

PAGE TOP