サポート » 使い方全般 » 親カテゴリー毎のパンくず表示

  • 親Aのカテゴリーに子A~Z、孫A~Z
    親Bのカテゴリーに子A~Z、孫A~Z
    と複数の親カテゴリーを作成しています。
    親Aと親Bを分けて子と孫を表示させたいです。

    <?php
        $cats = get_the_category();
        foreach($cats as $cat):
        if($cat->parent) echo $cat->cat_name;
        endforeach;
    ?> 

    子と孫の表示までは上記でできましたが
    親Aと親Bの子と孫が表示されてしまいます。
    どういう風に記述すればいいでしょうか。
    またhtmlタグ入れ方やクラス指定などもご教示いただけますと幸いです。

    親Aと親Bは使うページが異なるので一緒に出力されるものでなくていいです。
    親Aの 子 > 孫

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    get_ancestors() で祖先カテゴリーを取得することができます。
    https://wpdocs.osdn.jp/関数リファレンス/get_ancestors

    $cats = get_the_category();
    $ancestor = get_category_by_slug( '親 A または B のスラッグ' );
    foreach ( $cats as $cat ) {
    	if ( in_array( $ancestor->cat_ID, get_ancestors( $cat->cat_ID, 'category' ) ) ) {
    		if ( $cat->parent ) echo $cat->cat_name;
    	}
    }

    またhtmlタグ入れ方やクラス指定などもご教示いただけますと幸いです。

    下記ページが参考になると思います。
    https://teratail.com/questions/143066

    トピック投稿者 shinichi_ntrue

    (@shinichi_ntrue)

    ishitaka さん
    回答ありがとうございます。
    試したところ表示順が孫子になりました。
    子孫にするために試してみましたが、うまくいきませんでした。

    <?php
    $cats = get_the_category();
    $ancestor = get_category_by_slug( 'A' );
    $reversed_ancestor = array_reverse($ancestor); 
    foreach ( $cats as $cat ) {
    	if ( in_array( $ancestor->cat_ID, get_ancestors( $cat->cat_ID, 'category' ) ) ) {
    		if ( $cat->parent ) echo '<span>'. $cat->cat_name .'</span>';
    	}
    }
    ?>

    $reversed_ancestor = array_reverse($ancestor);

    get_category_by_slug() は、カテゴリーのオブジェクトを返します。配列ではありません。
    https://wpdocs.osdn.jp/関数リファレンス/get_category_by_slug

    • この返信は5年、 2ヶ月前にishitakaが編集しました。
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「親カテゴリー毎のパンくず表示」には新たに返信することはできません。