[wordpress] get_the_categoryを使った親カテゴリと子カテゴリの判定

WordPressで親カテゴリと子カテゴリを持つ記事の親カテゴリのIDを取得する必要があったのでググっていたら以下の方法をよく目にしました。

$cats = get_the_category();
$cat = $cats[0];
$cat->category_parent;

これを実際に使ってみたところ親カテゴリのIDを引っ張ってくる記事もあれば子カテゴリのIDを引っ張ってくる記事もあったりと規則性に欠け困ったのでどう対応したかの備忘録。

$cats = get_the_category();
foreach($cats as $cat)
{
    if($cat->category_parent == 0)
    {
        $parent = $cat;
        break;
    }
}
echo $parent->term_id;

WordPressのget_the_category()タグはその記事が属するカテゴリ情報を配列で返してくれる関数。だだその返ってくる配列の順序がとくに親子関係にならって返ってくるわけじゃないらしい。では何にならって返ってくるのか。知りません。そんなわけで$cat[0]と決め打ちで値を取得するのはちょっと怖かったので以下で対応。

WordPressのget_the_category()タグのcategory_parentは親カテゴリがない場合は「0」を返すとのことなので配列をループさせてその中で条件分岐して親カテゴリの情報を抽出。とりあえずこれで正確な親カテゴリの情報を拾えたので解決。カテゴリが複数入れ子になった場合のN番目を取る場合はどうしてるのかしら、みんな。。。

  • 2013.12.04
  • お仕事っぽいこと