memorandum

備忘録

2018.06.15

WordPressでカテゴリ情報を表示する方法

WordPressでは、カテゴリ情報を取得・表示するには以下の方法がある。
記事の属するカテゴリの他に、親カテゴリや祖先カテゴリを取得したい場合があるが取得方法が違う。

現在のカテゴリ取得

<?php
$cats = get_the_category(); //現在のカテゴリーを取得
$cat = $cats[0];
$cat_id   = $cat->cat_ID; //カテゴリーIDを表示
$cat_name = $cat->cat_name; //カテゴリー名を表示
$cat_slug = $cat->category_nicename; //スラッグを表示
?>

親カテゴリ取得

<?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; //スラッグを表示
}
?>

祖先カテゴリ取得(投稿記事で表示させる)

<?php
$cats = get_the_category($post->ID); //現在の投稿記事のIDからカテゴリー情報を取得
$cat = $cats[0]; //複数登録されている場合、一番最初のカテゴリー情報を取得
$catName = $cat->cat_name; //現在表示のカテゴリー名
$catSlug = $cat->slug; //現在表示のスラッグ
$catParent = $cat->parent; //親カテゴリーのID。なければ0。
$thisCat = $cat->cat_ID; //現在表示のカテゴリーID

if( $catParent == 0){ //一番上の親カテゴリーなら
  echo $thisCat; //カテゴリーID表示
  echo $catName; //カテゴリー名表示
  echo $catSlug; //スラッグ表示
} else {
  $ancestor = array_pop(get_ancestors( $thisCat, 'category' )); //配列の一番最後の値(一番上のカテゴリーID)を取得
  echo $ancestor; //カテゴリーID表示
  echo get_cat_name($ancestor) -> cat_name; //カテゴリー名表示
  echo get_category($ancestor) -> slug; //スラッグ表示
}
?>

祖先カテゴリ取得(カテゴリーアーカイブで表示させる)

<?php
$cat = get_queried_object(); //カテゴリーオブジェクトを取得
$catName = $cat->cat_name; //現在表示のカテゴリー名
$catSlug = $cat->slug; //現在表示のスラッグ
$catParent = $cat->parent; //親カテゴリーのID。なければ0。
$thisCat =  $cat->cat_ID; //現在表示のカテゴリーID
 
if( !$catParent ){ //現在のページが一番上の親カテゴリーなら(0なら)
  echo $thisCat; //カテゴリーID表示
  echo $catName; //カテゴリー名表示
  echo $catSlug; //スラッグ表示
} else {
  $ancestor = array_pop(get_ancestors( $thisCat, 'category' )); //配列の一番最後の値(一番上のカテゴリーID)を取得
  echo $ancestor; //カテゴリーID表示
  echo get_cat_name($ancestor) -> cat_name; //カテゴリー名表示
  echo get_category($ancestor) -> slug; //スラッグ表示
}
?>
MAIL制作・お見積りのご依頼
ご相談・お問い合わせ