PHP to show posts from category

I’m trying to code this slider for our WordPress site to show in each box, the first, second and third most recent posts from the category (in this instance it’s sports). No matter what I do with the count variable I can’t get the other posts to show up, just the first one. Here is the loop I’m using and the code, the page is smeharbinger.net/category/sports

<div class="tabbed">

<!-- tab 1 -->
<div class="t1">
<ul>
    <?php
$count = 1; 
$tabbedSportsQuery = new WP_Query('cat='.get_query_var('cat').'&showposts=1');
while ($tabbedSportsQuery->have_posts()) : $tabbedSportsQuery->the_post(); 
echo '<div class="t'.$count.'">';
echo the_post_thumbnail(array(665,500), array ('class' => 'alignnone'));
$count++; 
endwhile;

?>

</ul>
</div>

<!-- tab 2 -->
<div class="t2">
<ul>
    <?php
  $count = 2; 
$tabbedSportsQuery = new WP_Query('cat='.get_query_var('cat').'&showposts=1');
while ($tabbedSportsQuery->have_posts()) : $tabbedSportsQuery->the_post(); 
echo '<div class="t'.$count.'">';
echo the_post_thumbnail(array(665,500), array ('class' => 'alignnone'));
$count = 2; 
endwhile;

?>

</ul>
</div>

<!-- tab 3 -->
<div class="t3">
<ul>
    <?php
$count = 3; 
$tabbedSportsQuery = new WP_Query('cat='.get_query_var('cat').'&showposts=1');
while ($tabbedSportsQuery->have_posts()) : $tabbedSportsQuery->the_post(); 
echo '<div class="t'.$count.'">';
echo the_post_thumbnail(array(665,500), array ('class' => 'alignnone'));
$count++; 
endwhile;

?>

</ul>
</div>

<!-- The tabs -->
<ul class="tabs">
<li class="t1"><a class="t1 tab" ><h10><?php echo get_the_title($ID); ?></h10></a>        </li>
<li class="t2"><a class="t2 tab" ><h10><?php echo get_the_title($ID); ?></h10></a>  </li>
<li class="t3"><a class="t3 tab" ><h10><?php echo get_the_title($ID); ?></h10></a>  </li>
</ul>

</div><!-- tabbed -->

Related posts

Leave a Reply

2 comments

  1. Try this. Note:

    • You only need to query once, but set the number of posts to 3. A while loop will then loop through these for you.
    • The $count++ increases the count from 1 to 2 to 3.

      <?php
      $count = 1;
      $tabbedSportsQuery = new WP_Query(array(
          'cat' => get_query_var('cat'),
          'posts_per_page' => 3
      ));
      
      while ($tabbedSportsQuery->have_posts()) : $tabbedSportsQuery->the_post();
      ?>
          <div class="t<?php echo $count?>">
              <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(array(665,500), array ('class' => 'alignnone')); ?></a>
          </div>
      <?php
      $count++;
      endwhile;
      ?>
      
      <!-- The tabs -->
      <ul class="tabs">
      <li class="t1"><a class="t1 tab" ><h10><?php echo get_the_title($ID); ?></h10></a>        </li>
      <li class="t2"><a class="t2 tab" ><h10><?php echo get_the_title($ID); ?></h10></a>  </li>
      <li class="t3"><a class="t3 tab" ><h10><?php echo get_the_title($ID); ?></h10></a>  </li>
      </ul>
      

  2. Hope below code will help you.. Loop thru the post and then print div for tab and then try to get remaining tabs into a variable and at end of while loop print that variable.

    <?php
        $count = 1;
        $tabbedSportsQuery = new WP_Query(array(
            'cat' => get_query_var('cat'),
            'posts_per_page' => 3
        ));
        $out = '';
        while ($tabbedSportsQuery->have_posts()) : $tabbedSportsQuery->the_post();
    ?>
        <div class="t<?php echo $count?>">
            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(array(665,500), array ('class' => 'alignnone')); ?></a>
        </div>
        <?php 
            if($count == 1) {   
                 $out .= '<ul class="tabs"><li class="t'.$count.'">';
                } else {
                    $out .= '<li class="t'.$count.'">';
                }   
                $out .= '<a class="t'.$count.' tab"><h10>'.get_the_title($ID).'</h10></a>'; 
                if($count == 3) {   
                    $out .= '</li></ul>';
                } else {
                    $out .= '</li>';
            } 
        ?>
    <?php
        $count++;
        endwhile;
        print $out;
    ?>