サポート » テーマ » カテゴリ階層の深いエントリーの一番上のカテゴリを取得したい

  • カテゴリ階層の深いエントリーをsingle.phpで表示した際、大元の親カテゴリを取得して条件分岐でヘッダ画像を出そうとしています。

    /* 現在のカテゴリ-の取得 */
    $cat_now = get_the_category();
    $cat_now = $cat_now[0];

    /*親カテゴリーのID取得*/
    $parent_id = $cat_now->category_parent;
    if ($parent_id == hoge ) { ?>
    /*ヘッダ画像表示*/
    <?php elseif ***** ?>

    現在
    親カテゴリ
     子カテゴリ
      孫カテゴリ
    3階層となっており、
    孫カテゴリに属するエントリーでの$parent_idは子カテゴリのIDを返しています。
    これを親カテゴリのID返すようにしたいのですが、何か方法ないでしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    takewrongさん、こんにちは。

    1階層上のカテゴリーのidが分かるのですから、1階層上のカテゴリー情報をget_category( $parent_id )で取得し、最終的にcategory_parentが0になるカテゴリーが大元のカテゴリーになります。

    下記は、私が使っているクラスのメソッドで、指定カテゴリの上位カテゴリーを配列で取得するものです。参考にしてみてください。

    function get_category_ancestors( $cat_id, $ancestors = array() ) {
    	$cat = get_category( $cat_id );
    	$ancestors[] = $cat;
    	if ( $cat->parent != 0 ) {
    		$ancestors = $this->get_category_ancestors( $cat->parent, $ancestors );
    	}
    	return $ancestors;
    }

    私のほうからも一つ呈示させていただくとしたら、単に最上位のカテゴリが欲しいならば
    $res = array_pop($post->ancestors);
    これだけでも取れないですかね?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カテゴリ階層の深いエントリーの一番上のカテゴリを取得したい」には新たに返信することはできません。