ひとつだけのカテゴリの場合は実装することが出来た
具体的なコードを載せていただいたほうが、回答が付きやすいかもしれません。
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してますので、そのへんはご了承ください。
整形はおまかせします。
また、深い階層は考慮してませんので、そのような場合は適宜工夫する必要があります。
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";
この部分なので、まずは順番に表示することを解決した後に、表示を勉強なさってはいかがでしょう?
少しは自分で書いてみて
○○のようにやったけどダメだったので正解を教えて欲しい
って言ったほうが良いと思いますよ。