サポート » 使い方全般 » カテゴリーのスラッグを使った条件分岐で画像表示させたい

  • 解決済 shinkichi

    (@shinkichi)


    親カテゴリー、子カテゴリー(slug001、slug002)があります。
    その親カテに子カテ一覧を表示させています。

    しかし今のままだと文字で一覧が出ているだけなので、
    それぞれのバナーを表示させたいなと思っています。

    カスタム投稿のものだと、ソースの出所が不明なのですが下記で表示が出来たことを思い出しました。

    <?php
    $term = get_term_by(
        'slug',
        get_query_var('term'),
        get_query_var('taxonomy')
    );
    ?> 
    <?php if( $term->slug === 'slug001' ): ?>
      <p><img src="http://XXXXXXX/XXXXXXXXXX"></p>
    <?php elseif( $term->slug === 'slug002' ):?>
      <p><img src="http://AAAAAAAA/AAAAAAAAA"></p>
    <?php else:?>
      <p><img src="images/no_image.gif" alt="画像はありません"></p>
    <?php endif; ?>

    しかし今回は、「category.php」に表示させたいのですが、
    さすがにこのソースだとうまくいきませんでした。

    「get_category」なのか、
    「get_category_by_slug」なのか、
    それとも「get_queried_object」なのか…
    あれこれ試してみたのですが、どれもだめで。
    そもそも、ソースの書き方が根本的に分からなくて困っております。

    親カテに表示させるわけだから、
    下記ではだめなわけで。

    <?php if( is_category( 'slug001' ) ): ?>
      <p><img src="http://XXXXXXX/XXXXXXXXXX"></p>
    <?php elseif( is_category( 'slug002' ):?>
      <p><img src="http://AAAAAAAA/AAAAAAAAA"></p>
    <?php else:?>
      <p><img src="images/no_image.gif" alt="画像はありません"></p>
    <?php endif; ?>

    もしお分かりの方がいらっしゃいましたらご教授いただければ幸いです。
    よろしくお願いいたします。

    • このトピックはshinkichiが5年、 11ヶ月前に変更しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • get_the_category($id)でカテゴリー情報が取得できますので、
    子要素のIDを取得してそこからget_the_categoryで子カテゴリー情報を取得してはどうでしょうか?

    ただ、上のような記述の場合カテゴリーが増えた場合面倒なことになるのでスラッグ名の画像を用意して
    画像のファイル名の部分だけ切り替えるか、
    タームにメタ情報としてURLを設定しておきget_term_metaを使い表示させたほうがスマートな気がします。

    トピック投稿者 shinkichi

    (@shinkichi)

    早々のご回答ありがとうございます。
    大変恐縮なのですが、get_the_categoryを使った書き方が把握できておらず、
    うまくいきませんでした。
    お手数かとは思いますが、ソースを提示していただけるととても助かります。

    スラッグ名の画像を用意、は当初考えたことではあり、それであれば対応できたのですが、
    今回はカテが増えても随時追記していく方向でいくことにしました。

    get_the_category() ではなく get_categories() ですね。
    だいたい以下のような感じになります。

    <?php
    global $wp_query;
    $cat = $wp_query->get_queried_object();
    $child_cats = get_categories('hide_empty=0&parent='.$cat->term_id);
    foreach ( $child_cats as $child_cat ): ?>
    <?php if ( $child_cat->slug === 'slug001' ): ?>
      <p><img src="http://XXXXXXX/XXXXXXXXXX"></p>
    <?php elseif ( $child_cat->slug === 'slug002' ): ?>
      <p><img src="http://AAAAAAAA/AAAAAAAAA"></p>
    <?php else: ?>
      <p><img src="images/no_image.gif" alt="画像はありません"></p>
    <?php endif;
    endforeach;
    ?>

    4行目でその関数を使っていますが、 hide_empty=0 は「投稿が一つも属さないカテゴリも取得する」という意味なので、取得したくない場合は hide_empty=1 にしてください。

    トピック投稿者 shinkichi

    (@shinkichi)

    ご丁寧な回答をありがとうございました。

    「get_queried_object」、「get_categories」などは思いついたものの、それをどう書き出せば良いのか全く分からず。
    しかも参考にしていたものが「wp_query」を使っていなかったから、頭からは除外される始末。

    そんな状態でしたので、ご提示いただいたソースを拝見して、とても勉強になりました。

    子カテの名称、リンクなども問題なく出力できて、思い通りの結果になりました。
    重ね重ねありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カテゴリーのスラッグを使った条件分岐で画像表示させたい」には新たに返信することはできません。