今回は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と同じなので、これで親カテゴリーがあるかどうか判定しているということですね。
なお、コメントにもありますがparent
はcategory_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でカテゴリーを出力する方法【目的別】