サポート » 使い方全般 » 現在のtermと同じかどうかで条件分岐

  • 解決済 sak-a

    (@sak-a)


    稚拙な質問だとは思いますがご容赦ください。

    termによって表示の順番を指定しているのですが、
    if文で
    もしタームが今出したタームと同じ場合
     処理1
    違う場合
     処理2

    ということがしたいのですが、全部処理されるか全部処理されない状態で止まっています。
    ご教授頂ければ幸いです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 稚拙ではないと思いますが、情報が少ないためにいろいろな状況が想像できてしまうのでアドバイスをもらいにくいですよ。

    例えばこういうことでしょうか?

    1. 投稿のアーカイブページのループの中で
    2. 一つ前の投稿についていたタームを覚えておいて
    3. 現在の投稿のタームと比較する
    4. 同じなら、現在の投稿を表示する
    5. 違っていたら、新しいタームを表示させた後に現在の投稿を表示する

    ご回答ありがとうございます。
    基礎部分がほぼないままやっているため、アーカイブというものがわからないのですが、

    固定ページにカスタム投稿にて追加したものについてなのですが、
    ターム1
     画像  画像
     名前  名前

    ターム2
     画像  画像
     名前  名前

    という風にターム1のものがまだある場合はそのまま処理していき、ターム2になった時に「改行」を行いたいのです。
    ターム順に表示はうまく出ていれば下記コードが実際に入れているものです。

    --------------------

    <?php $categories = get_terms( 'タクソノミー名', 'get=all' ) ; ?>
    	<?php foreach($categories as $cat): ?>
    	<?php
    	//get_termsからの情報を格納
    	$cat_name = $cat->name;
    	$cat_tax = $cat->taxonomy;
    	$cat_term = $cat->term_id;
    	$cat_term_tax_id = $cat->term_taxonomy_id;
    	?>
    	<?php $loop = new WP_Query(
    		array(
    			'post_status' => 'publish',
    			'post_type' => 'カスタム投稿名',
    			'tax_query' => array(
    					array(
    						'taxonomy' => $cat_tax,
    						'field' => $cat_term_tax_id,
    						'terms' => $cat_term
    						)
    						),
    			'posts_per_page' => -1,
    			)
    					); ?>
    <li>
    <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
    <a href="<?php the_permalink(); ?>" class="btn">
    <div class="img_box"><?php echo wp_get_attachment_image(post_custom('画像'), 'goodsImg'); ?></div>
            	<div class="txt_box"><h3><?php the_title(); ?></h3></div></a>
    <?php if ( ターム名が出ているものと同じ   ): ?>
    処理A
    <?php else : ?>
    処理B
    <?php endif ; ?>
    <?php endwhile; ?>
    <?php endforeach; ?>

    --------------------

    という形で行いたいのですが、
    後半の

    <?php if ( ターム名が出ているものと同じ   ): ?>
    処理A
    <?php else : ?>
    処理B
    <?php endif ; ?>

    の書き方がわかりません。

    これで伝わればいいのですが、まだわからない場合はお手数ですがどこがわからないか教えて下さい。

    こういうコードでどうでしょう。

    <?php
    $posttype_slug = 'カスタム投稿タイプ';
    $taxonomy_name = 'カスタムタクソノミー';
    $categories = get_terms( $taxonomy_name );
    ?>
    <ul><!-- ターム毎のリスト -->
    <?php  foreach( $categories as $cat ):
      //get_termsからの情報を格納
      $cat_name = $cat->name;
      $cat_term_id = $cat->term_id;
    ?>
      <li><?php echo 'ターム: ' . $cat_name; ?><!-- ここでターム名を表示 -->
      <?php  $loop = new WP_Query( array(
        'post_status' => 'publish',
        'post_type' => $posttype_slug,
        'tax_query' => array( array(
          'taxonomy' => $taxonomy_name,
          'terms' => $cat_term_id
        ) ),
        'posts_per_page' => -1
      ) );
      ?>
      <ul><!-- タームが付いている投稿のリスト -->
      <?php  while ( $loop->have_posts() ) :
        $loop->the_post(); ?>
        <li style="float:left"><!-- 横並びにする -->
          <a href="<?php the_permalink(); ?>" class="btn">
          <div class="img_box"><?php echo wp_get_attachment_image(post_custom('画像'), 'goodsImg'); ?></div>
          <div class="txt_box"><h3><?php the_title(); ?></h3></div></a>
        </li>
      <?php endwhile; ?>
      </ul><!-- タームが付いている投稿のリスト -->
      <br style="clear:both" /><!-- 横並びを解除 -->ここで改行<br />
    <?php endforeach; ?>
    <ul><!-- ターム毎のリスト -->

    ありがとうございます、おかげさまでやりたいことが解決しました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「現在のtermと同じかどうかで条件分岐」には新たに返信することはできません。