サポート » 使い方全般 » 記事が属しているカテゴリ表示について

  • 初めましてよろしくお願い致します。

    トップページに記事一覧を並べており、各記事は2つのカテゴリに属しています。
    親カテゴリ1 = color 親カテゴリ2 =genre

    トップページの記事一覧で以下の用に表示させたいと思っております。
    ★部分はカテゴリスラッグをhtmlのクラス名にし、各カテゴリによって
    アイコンが変わるようにスタイルをあてています。
    ____________________________
    color(画像)| ★black
    ____________________________
    genre(画像)| ★pop
    ____________________________

    現在ひとつだけのカテゴリの場合は実装することが出来たのですが、
    二つのカテゴリに属している場合は以下の用になってしまいます。
    ____________________________
    color(画像)| black,pop
    ____________________________
    genre(画像)|
    ____________________________

    記事が属している特定の親カテゴリの子カテゴリを
    別々に表示させる方法などはあるのでしょうか?
    もし分かる方がいらっしゃいましたらお助けくださいませ。
    よろしくお願い致します。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • ひとつだけのカテゴリの場合は実装することが出来た

    具体的なコードを載せていただいたほうが、回答が付きやすいかもしれません。

    トピック投稿者 kabochao

    (@kabochao)

    kurosquare様
    ご返答ありがとうございます。
    具体的なコードは以下の通りです。

    これだとひとつだけのカテゴリの場合は実装することが出来ました。

    <li>
    <p><span class="clip-color">color</span></p>
    <span class="clip-color-icon clip-color-<?php $category = get_the_category(); echo $category[0]->category_nicename; ?>">
    <?php the_category(' '); ?></span>
    </li>

    希望は以下のように出力されることを望んでいます。

    <li>
    <p><span class="clip-color">color</span></p>
    <span class="clip-color-icon clip-color-red>">red</span>
    </span>
    </li>
    <li>
    <p><span class="clip-genre">genle</span></p>
    <span class="clip-genre-icon">rock</span>
    </li>

    <span class=”clip-color-icon ■clip-color-red■>”>■red■</span>
    ■で囲っているところが投稿された際、親カテゴリcolorの
    子カテゴリを出力できるようにはなりました。

    <span class=”clip-genre-icon”>●rock●</span>
    ●で囲っているところが投稿された際の親カテゴリgenleの
    子カテゴリですが、こちらを出力することができず、上記の
    コードで出力しようとすると

    <span class="clip-color-icon clip-color-red,rock>">red,rock</span>

    となってしまいます。
    ご解決方法が分かる方がいらっしゃいましたらよろしくお願い致します。

    もっとスマートなやりかたがあるかもですが、とりあえず動作したので

    <?php
    	$cat_arr = get_the_category();
    	foreach($cat_arr as $loop){
    		if($loop->category_parent){
    			echo get_the_category_by_ID($loop->category_parent). " | ". $loop->cat_name. "<br />\n";
    		}
    	}
    ?>

    直接echoしてますので、そのへんはご了承ください。
    整形はおまかせします。

    また、深い階層は考慮してませんので、そのような場合は適宜工夫する必要があります。

    トピック投稿者 kabochao

    (@kabochao)

    kvex様
    ご返答ありがとうございます。

    kvex様に教えていただいたやり方でやってみたのですが、
    カテゴリの並び順が希望通りにいかないのですが何が原因でしょうか?
    教えていただいたやり方だと以下のようになりました。
    この順番を変更して出力したいと思っています。

    genre | pop
    color | white

    教えていただいたやり方で各親カテゴリ、子カテゴリを

    • <p><span>で囲みたいと思っているのですが、phpを
      あまり理解していない為、教えていただいたコードを
      編集してみませんが、思うようになりませんでした。

      下記のように出力する為にはどういった書き方を
      すればいいか教えていただけませんでしょうか?
      知識不足で申し訳ございませんがよろしくお願い致します。

      color,genle = 親カテゴリ
      red,rock = 子カテゴリ

      <li>
      <p><span class="clip-color">color</span></p>
      <span class="clip-color-icon clip-color-red>">red</span>
      </span>
      </li>
      <li>
      <p><span class="clip-genre">genle</span></p>
      <span class="clip-genre-icon">rock</span>
      </li>

    color(画像)| ★black
    genre(画像)| ★pop

    とおっしゃられたのですが、違うのですか?
    あってるように見えますけど・・・・

    あ・・・colorが先でgenreが後ということですか?
    だったら、カテゴリの格納された順番が影響してるかな?
    Category Order プラグインとかでなんとかならないですかね?

    それと、上記はサンプルなのでpやらspanやらのタグは全然考えていません、そのへんはご自分の希望する形式を書いていただければと思ったので。
    実際に出力してるのは
    echo get_the_category_by_ID($loop->category_parent). " | ". $loop->cat_name. "<br />\n";
    この部分なので、まずは順番に表示することを解決した後に、表示を勉強なさってはいかがでしょう?
    少しは自分で書いてみて
    ○○のようにやったけどダメだったので正解を教えて欲しい
    って言ったほうが良いと思いますよ。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「記事が属しているカテゴリ表示について」には新たに返信することはできません。