• 記事を一覧で並べ、それを5件毎に<div class=”group数”></div>で囲い、groupが1つ増える毎に数を1つずつ増やそうとしています。グループを10個まで作ろうと思い、for文を使ってやっているのですがうまくいきません。

    <?php $post_count = 1; echo '<div id="group">' . "\n"; ?>
    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <?php
    for ($i = 0; $i < 10 && $post_count % 5 == 1 && $post_count != 1; $i++) {
      if ($post_count % 5 != 1) {
      }
         echo '</div>' . "\n" . '<div id="group' . $i . '">' . "\n";
    } ?>
     <div class="entry">
      <a href="<?php the_permalink(); ?>">
       <?php the_post_thumbnail(); ?>
       <h5><?php the_title( ); ?></h5>
      </a>
     </div>
    
    <?php $post_count++; ?>
    <?php endwhile; ?>
    <?php echo '</div>' . "\n"; ?>
    <?php else : ?>
    <?php endif; ?>

    試したコードは上記で、結果が下記のように出力されてしまいます。

    <div class="group">1~5件目の.entry</div>
    <div class="group0">空</div>
    <div class="group1">空</div>
    <div class="group2">空</div>
    ・
    ・
    ・
    <div class="group8">空</div>
    <div class="group9">6~10件目の.entry</div>
    <div class="group0">空</div>
    <div class="group1">空</div>
    <div class="group2">空</div>
    ・
    ・
    ・
    <div class="group8">空</div>
    <div class="group9">11~15件目の.entry</div>
    ・
    ・
    ・

    どのようにすればいいのでしょうか。良い方法ありましたら教えて頂けると幸いです。
    参考にしたもの

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • こんにちは

    PHPだけで書くと、なぜこのような出力になっているのかがわかると思います。

    $dummy_posts = array( 'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh', 'ii', 'jj' );
    
    while ( list( $key, $post ) = each( $dummy_posts ) ) {
    
    	for ( $i = 0; $i < 10 && $key % 5 == 1 && $key !== 1; $i++ ) {
    		echo $i;
    	}
    
    	echo "---$post---";
    }

    この結果は、

    ---aa------bb------cc------dd------ee------ff---0123456789---gg------hh------ii------jj---

    のようになると思います。

    つまり、whileの6回目のループで、余りは1、1でもありませんから、0-9迄10回ループする事になります。

    なので、for文を使わない方法を考えるといいと思います。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「記事を決められた数毎にタグ(div等)で囲み、class名の数字をループで1つず」には新たに返信することはできません。