• 解決済 kahckan

    (@kahckan)


    はじめまして!
    WorldPressを導入したばかりで、自作のテーマ作りに四苦八苦しています。

    とある投稿記事にて、
    複数のカテゴリを所有している場合、
    カテゴリーページのループ内で親カテゴリを抜いた子カテゴリーのみを全て取得し、
    スラッグ名にてclassを使いわけたい場合どうしたらよろしいでしょうか?

    例えば、
    親カテゴリ(Discography)
    ┗子カテゴリ(Single)
    ┗子カテゴリ(Album)

    というカテゴリ状態の中で、

    投稿記事【人気シングルだけを集めたアルバム発売(仮)】が、
    Discography、Single、Albumのカテゴリにチェックを入れている場合、

    ループ内で、親カテゴリを抜いた
    <li class=”feat single”>
    本文

    としたいのです。

    自分なりにたどりついた記述方法は、
    <?php
    $cat = get_the_category();
    $tmparray = array();
    if( count( $cat ) > 1 ) {
    foreach( $cat as $c ) $tmparray[] = $c->category_nicename;
    echo implode( ‘ ‘, $tmparray );
    }
    ?>

    なのですが、
    これだとdiscography feat singleという風に親カテゴリまで表示されちゃいます。
    かと言って、
    $cat = get_the_category();
    の下に
    $cat = $cat[1];と記述しても当然ダメです。

    classでデザイン指定する際に、親カテゴリ分のclass名を何も指定しなければいいだけの話ですが、
    記述として見た時には、やはり納得がいかず妥協となってしまいます。

    プログラムの方も勉強中なのですが、まだまだ使いこなせていない状況でして、
    ずっと悩み続けている状況です。
    もしよろしければ、何かアドバイス頂ければと思います。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • popup

    (@popup)

    ‘parent’が0であれば親カテゴリですので、’if( $c->parent != 0 )’なものだけ配列に格納して表示してはいかがでしょう。

    トピック投稿者 kahckan

    (@kahckan)

    アドバイスありがとうございます!

    <?php
    $cat = get_the_category();
    $tmparray = array();
    if( count( $cat ) > 1 ) {
    foreach( $cat as $c ) if( $c->parent != 0 ) $tmparray[] = $c->category_nicename ;
    }
    ?>

    上の記述で、
    まさしくやりたいような内容になりました!
    本当に助かりました!ありがとうございますm(_ _)m

2件の返信を表示中 - 1 - 2件目 (全2件中)

トピック「複数所有するカテゴリのスラッグを取得したい」には新たに返信することはできません。