My stackoverflow answer #4

by krike in Other / Q&A on 29 Sep 2010


Each week I feature one of my answers on stackoverflow hoping it might help other people.

The question

This weeks question by aurel: looping through WordPress posts

I am trying to get wordpress posts, 3 at a time, this is the code i’m using:

<?php while ( have_posts() ) : the_post() ?> 
<?php  if(get_post_meta($post->ID, 'feature', true) != true) {; ?>
         <div class="show_col">
  <?php   for ($i = 1; $i <= 3; $i++) { ?>

<div class="set">
<a href="<?php the_permalink(); ?>" title="<?php printf( __('Permalink to %s', 'your-theme'), the_title_attribute('echo=0') ); ?>" rel="bookmark"> 
<img class="image" src="http://localhost/portpress/wp-content/themes/myTemp/portfolio/<?php echo get_post_meta($post->ID, 'intro_thump', true); ?>.jpg" width="300px" alt="AUREL #<?php the_ID(); ?>" />
</a>    
<?php the_content("<P class='more'> Read More &#187; </p>"); ?>

</div>
<?php };  ?>
</div>           

<?php  }; ?>
<?php endwhile; ?>  

i know this loop is echoing ONE post THREE times – but what i really want is this end result

 <div class="show_col">
      <div class="show_col"> post1  </div>
      <div class="show_col"> post2  </div>
      <div class="show_col"> post3  </div>
 </div>
<div class="show_col">
      <div class="show_col"> post4  </div>
      <div class="show_col"> post5  </div>
      <div class="show_col"> post6  </div>
 </div>
<!-- and so on -->

i am doing this as the height of each post varies – therefore i add something like .show_col{clear:both} so that the next three posts go under neath.

My anwser

This is the code you need (i corrected some of your syntax):

<?php $i = 0; ?>
<?php while ( have_posts() ): the_post();?> 
    <?php  if(get_post_meta($post->ID, 'feature', true) != true): ?>
    <div class="show_col">

        <?php if(($i%3) == 0): ?>
            </div>
            <div class="show_col">
        <?php endif;?>

        <div class="set">
        <a href="<?php the_permalink(); ?>" title="<?php printf( __('Permalink to %s', 'your-theme'), the_title_attribute('echo=0') ); ?>" rel="bookmark"> 
        <img class="image" src="http://localhost/portpress/wp-content/themes/myTemp/portfolio/<?php echo get_post_meta($post->ID, 'intro_thump', true); ?>.jpg" width="300px" alt="AUREL #<?php the_ID(); ?>" />
        </a>    
        <?php the_content("<P class='more'> Read More &#187; </p>"); ?>

        </div>

    </div>           

    <?php  endif; ?>
<?php $i++; ?>
<?php endwhile; ?> 

also you seem to add a semi collon after closing the function ( }; ), don’t dot that, there is no need for it.

Written by krike

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet nisl nisl. Ut interdum libero vitae quam ultricies et lacinia elit aliquet. Praesent tincidunt, sem tempus feugiat feugiat, turpis tellus scelerisque erat, sit amet feugiat neque arcu ac lectus. Sed at mi et elit interdum scelerisque vitae eu felis.

krike has written 77 posts.