Search code examples
phpwordpressloopsrow

Wrap every 4 posts in a custom wordpress loop with a div


    <?php
      $args = array(
      'post_type' => 'college',
      'posts_per_page' => -1,
      'order' => 'DESC',
      'orderby' => 'menu_order'
      );

      $the_query = new WP_Query( $args );
      if ( $the_query->have_posts() ) :
      while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

      <div class="col-3">
        <?php the_title(); ?>
      </div>

   <?php
   endwhile;
   endif;
   wp_reset_postdata();
   ?>

Hi, I've never done this before. I'm trying to wrap every 4 posts in the loop above inside a <div class="row"></div>


Solution

  • This should sort you out

    $args = array(
        'post_type' => 'college',
        'posts_per_page' => -1,
        'order' => 'DESC',
        'orderby' => 'menu_order'
    );
    
    $the_query = new WP_Query($args);
    if ($the_query->have_posts()) :
        $counter = 0;
        while ($the_query->have_posts()) : $the_query->the_post();
            if ($counter % 4 == 0) :
                echo $counter > 0 ? "</div>" : ""; // close div if it's not the first
                echo "<div class='row'>";
            endif;
            ?>
            <div class="col-3">
                <?php the_title(); ?>
            </div>
            <?php
            $counter++;
    
        endwhile;
    endif;
    wp_reset_postdata();
    ?>
    

    Adapted from Wrapping a div around every third item in a foreach loop PHP