サポート » テーマ » 記事を決められた数毎にタグ(div等)で囲みたい

  • 解決済 developer

    (@6flat)



    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    
    <div class="post">
     <?php the_content();?>
    </div>
    
    <?php endwhile; ?>
    <?php else : ?>
    <?php endif; ?>

    上記コードで記事をループで挿入しているのですが、この記事を2つ毎や4つ毎と決められた数毎にdivで下記の様に囲みたいのです。

    <div class="group">
     <div class="post">記事1</div>
     <div class="post">記事2</div>
    </div>
    <div class="group">
     <div class="post">記事3</div>
     <div class="post">記事4</div>
    </div>

    この様にするにはどうすれば良いでしょうか。
    何か良い方法がありましたら、教えて頂けると幸いです。

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

    (@jim912)

    6flatさん、こんばんは。

    このような時は、盛りを過ぎた某芸人のように、カウントしながらn回毎(nで割った余りがmの時)に囲むソースを出力する方法が一般的です。

    具体的に、4記事毎にグルーピングさせる場合は、

    <?php if (have_posts()) : ?>
    <?php $post_count = 1; // カウンターの初期化
    echo '<div class="group">' . "\n"; // まず最初の囲みを出力
    ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php if ( $post_count % 4 == 1 && $post_count != 1 ) { echo '</div>' . "\n" . '<div class="group">' . "\n"; } // 4で割った余りが1で、なおかつカウンターが1(最初)でなければ閉じdivと囲みの開始タグを出力
    ?>
      <div class="post">
        <?php the_content();?>
      </div>
    <?php $post_count++; // カウンターを1増やす ?>
    <?php endwhile; ?>
    <?php echo '</div>' . "\n"; // 最後にdivを閉じる ?>
    <?php else : ?>
    <?php endif; ?>

    と言った感じです。
    試してみてください。

    jim912さん、ご回答ありがとうございます。
    盛りを過ぎた某芸人のようにカウントしながら試してみたところ、求めていた結果を得る事ができました。
    提示頂いたコードも、分かりやすくコメントがされていてとても助かりました。
    本当にありがとうございました。

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