サポート » 使い方全般 » 子カテゴリーのスラッグを取得したい

  • 解決済 kawa0310

    (@kawa0310)


    シングルページごとにCSSを切り替えるためにカテゴリスラッグを取得しているのですが、親子両方のカテゴリが指定されていると親カテゴリが優先されるようです。
    取得するカテゴリを指定することって可能なのでしょうか?

    現在使用しているコード
    <?php if (is_single()) { ?> class="<?php $cat = get_the_category(); $cat = $cat[0];{echo $cat->category_nicename;} ?>"<?php } ?>

    例)
    親カテゴリー — Computer
    子カテゴリー — Macintosh
    となっている場合、Computerが優先される。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • 必ず「親子」でカテゴリ指定しているなら
    $cat[1]->category_nicename;
    だけでOKです。

    カテゴリが全部クラスに出て良いなら
    <div <?php post_class() ?>>
    と書けば
    <div class="post-ID番号 post hentry category-computer category-macintosh">
    と出力されます。

    モデレーター jim912

    (@jim912)

    kawa0310さん、kzさん、こんにちは。

    get_the_category();は階層に関係なく、カテゴリー名順に取得するだけなので必ずしも親が優先されるわけではありません。

    つまり

    $cat[1]->category_nicename;

    では、子だとは限りません。

    より下層のカテゴリーを取得するのであれば、

    $cats = get_the_category();
    $current_cat = '';
    foreach ( $cats as $cat ) {
    	if ( ! $current_cat || cat_is_ancestor_of( $current_cat, $cat ) ) {
    		$current_cat = $cat;
    	}
    }

    のようにすべきです。

    トピック投稿者 kawa0310

    (@kawa0310)

    kzさん、jim912さん
    ありがとうございました。
    これで何とか解決できたようです。

    kawa0310さんは解決されているのに掘り起こしてすみませんが
    同様に悩んでいるので続きで質問させてください。


    <li class="<?php $cat = get_the_category(); $cat = $cat[0]; {
    echo "$cat->category_nicename" ;
    } ?>">"><?php the_title(); ?>

    以上のように書いてて、kawa0310さんとほぼ同様で子カテゴリースラッグを取得して、classにしたいのですが、jim912さんのおっしゃるように、書き出されるスラッグが子だとは限らないので、子スラッグだけを取得したいのですが、


    $cats = get_the_category();
    $current_cat = '';
    foreach ( $cats as $cat ) {
    if ( ! $current_cat || cat_is_ancestor_of( $current_cat, $cat ) ) {
    $current_cat = $cat;
    }
    }

    こちらを、どのように組み込めば子カテゴリーのスラッグを取得できるかが分からないのでご教授いただけませんでしょうか。
    phpを理解してないが為の質問かと思いますが、どうぞ宜しくお願いいたします。

    すみません、、上の<li class=〜〜〜の部分がおかしかったので再度書きます。

    <li class="<?php $cat = get_the_category(); $cat = $cat[0]; {
    echo "$cat->category_nicename" ;
    } ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </li>

    どうぞ宜しくお願いいたします。

    解決済みのトピックに書いてはいけません。
    また、書いても誰も回答してはくれません。

    新しくトピックを立ててください。

    chestnut_jpさん、ご指摘ありがとうございます。
    失礼しました。
    新しいトピックにて質問させて頂きます。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「子カテゴリーのスラッグを取得したい」には新たに返信することはできません。