WordPressで親カテゴリーのデータを取得する方法

WordPressで親カテゴリーのデータを取得する方法 WordPress

今回はWordPressで親カテゴリーの名前やID、スラッグなどのデータを取得する方法を紹介します。

 

スポンサーリンク

親カテゴリーのデータを取得する方法

早速結論ですが、以下のように書けばokです。

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

// 親カテゴリーがあるか判定
if ( $cat->parent ) { // $cat->category_parentでもok
  // 親カテゴリーのデータを取得
  $parent_cat = get_category( $cat->parent );

  // カテゴリー名(どちらでもok)
  echo $parent_cat->name;
  echo $parent_cat->cat_name;

  // ID
  echo $parent_cat->cat_ID;

  // スラッグ(どちらでもok)
  echo $parent_cat->slug;
  echo $parent_cat->category_nicename;
}
?>

if ( $cat->parent )parentには親カテゴリーのIDが入っています。

親カテゴリーがない場合はparentの値には0が入ります。PHPでは0はfalseと同じなので、これで親カテゴリーがあるかどうか判定しているということですね。

なお、コメントにもありますがparentcategory_parentでも同じ値が取れます。カテゴリーのデータを取得するとなぜか同じ値が入ってるキーがいくつかあるんですよね…。

 

親カテゴリーのデータを見てみる

var_dump()すると親カテゴリーの中にあるデータが確認できます。ついでに子カテゴリーの中も見ておきましょう。

// 親カテゴリー
  public 'term_id' => int 4
  public 'name' => string '料理' (length=6)
  public 'slug' => string 'cooking' (length=7)
  public 'term_group' => int 0
  public 'term_taxonomy_id' => int 4
  public 'taxonomy' => string 'category' (length=8)
  public 'description' => string '' (length=0)
  public 'parent' => int 0
  public 'count' => int 0
  public 'filter' => string 'raw' (length=3)
  public 'cat_ID' => int 4
  public 'category_count' => int 0
  public 'category_description' => string '' (length=0)
  public 'cat_name' => string '料理' (length=6)
  public 'category_nicename' => string 'cooking' (length=7)
  public 'category_parent' => int 0

// 子カテゴリー
  0 => 
    object(WP_Term)[4573]
      public 'term_id' => int 5
      public 'name' => string '和風' (length=6)
      public 'slug' => string 'japanese-style' (length=14)
      public 'term_group' => int 0
      public 'term_taxonomy_id' => int 5
      public 'taxonomy' => string 'category' (length=8)
      public 'description' => string '' (length=0)
      public 'parent' => int 4
      public 'count' => int 2
      public 'filter' => string 'raw' (length=3)
      public 'cat_ID' => int 5
      public 'category_count' => int 2
      public 'category_description' => string '' (length=0)
      public 'cat_name' => string '和風' (length=6)
      public 'category_nicename' => string 'japanese-style' (length=14)
      public 'category_parent' => int 4

地味に注意しておきたいのが、get_the_category()で取得したカテゴリーは$cat[0]ですが、get_category()で取得したカテゴリーは$parent_catなんですよね([0]の有無の違い)。

これはget_the_category()get_category()の違いになるのですが、記事のIDを元にその記事のカテゴリーのデータを取得するget_the_category()は、その記事に2つ以上カテゴリーが割り振られているかもしれないので配列になります。

一方、カテゴリーのIDを元にそのカテゴリーのデータを取得するget_category()は配列になることはありません(同じIDのカテゴリーは存在しないので)。

 

カテゴリーのデータを取得するタグは種類がたくさんあって混乱しがちです。

過去にそのあたりをまとめた記事を書いたので参考にしてみてください。

>>【完全まとめ】WordPressでカテゴリーを出力する方法【目的別】

 

 

スポンサーリンク
WordPress
スポンサーリンク
でざなり