サポート » 使い方全般 » タクソノミー毎にテキストを条件分岐させ表示させたい

  • 解決済 lachu19313

    (@lachu19313)


    PHP初心者です。
    サービスのカスタム投稿を作成。タクソノミーA,B,C,Dがある状態で、サービスのアーカイブページに各タクソノミー毎に画像とタイトルを配置。
    その下に各タクソノミー毎にテキストを条件分岐させ表示させたいのですが、画像とタイトル部分はうまくいったものの、下記ではすべてのテキストがすべての画像とタイトル下部に表示される状態です。

    <?php
                $loop = new WP_Query( array( 'post_type' => 'service', 'posts_per_page' => 10 ) );
    
                if($loop->have_posts()) : // 該当する投稿がある場合
                ?>
                    <dl>
                    <?php while ( $loop->have_posts() ) : $loop->the_post(); // ループ開始 ?>
    
                        <dt>
    						<a href="<?php the_permalink() ?>">
    						<?php // カスタムタクソノミー 'service-cat' の処理
                            $terms = get_the_terms( get_the_ID(), 'service-cat' ); // 投稿に紐づけられた 'service-cat' のタームをすべて取得
                            $term = $terms[0];
                            $img = '<img src="' . get_bloginfo('template_url'). '/img/icn_'
                                  . $term->slug . '.png" alt="' . $term->name . '" />';
                            ?>
                            <?php echo $img; ?>
                            <h4><?php the_title(); ?></h4></a>
                        </dt>
                        <dd>
                        	<?php is_tax( 'a' ); ?>
                            <p>タクソノミーAの場合表示</p>
                            <?php is_tax( 'b' ); ?>
                            <p>タクソノミーBの場合表示</p>
                            <?php is_tax( 'c' ); ?>
                            <p>タクソノミーCの場合表示</p>
                            <?php is_tax( 'd' ); ?>
                            <p>タクソノミーDの場合表示</p>
                        </dd>
                    <?php endwhile; // ループ終わり ?>
                    </dl>
                <?php else: // 該当する投稿が無い場合 ?>
                <p>該当する投稿はありません</p>
    <?php endif; ?>

    色々調べてみたのですが、該当するものが見付けられず、こちらで質問させていただきました。
    ご教授のほどどうかよろしくお願い申し上げます。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター gatespace

    (@gatespace)

    ご教授いただきありがとうございます。
    返信遅れまして申し訳ございません。

    <?php is_tax( ‘a’ ); ?>部分を<?php has_term( ‘a’ ); ?>と変更してみましたが、表示は以前と変わらず、すべてのテキストがすべての画像とタイトル下部に表示される状態のままでした。

    そもそもの記述がおかしいのでしょうか?
    他に表示させる良い方法等ございましたらお教えいただけると幸いです。

    モデレーター gatespace

    (@gatespace)

    Codexの用例読みました?
    http://wpdocs.osdn.jp/関数リファレンス/has_term

    <?php
        if( has_term( 'jazz', 'genre' ) ) {
            // カスタム分類 genre のターム jazz が付いている投稿
        }
    ?>

    すみません。言葉が足りませんでした。

    if( has_term( ‘service’, ‘a’ )としても、
    if( has_term( ‘a’ )としても表示は変わりませんでしたので、
    has_term( ‘a’ );も試みた次第です。

    結果は全て同様でした。

    if( has_term( ‘service’, ‘a’ )としても、
    if( has_term( ‘a’ )としても表示は変わりませんでしたので、
    has_term( ‘a’ );も試みた次第です。

    if文の書き方が間違ってるかもしれませんね。

    上記リンクを読んでもわからない、解決しないという場合は、最初に投稿されたコードから if( has_term( 'service', 'a' )) に書き換えてみた状態を投稿していただけますか。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「タクソノミー毎にテキストを条件分岐させ表示させたい」には新たに返信することはできません。