1
votes

I want to display the latest 2 blog posts in my footer. I used while (have_posts()) : the_post(); to display all the blog posts in my blog page ( Almost it's the index page in my case ).

When I tried to filter the latest to blog posts using the same approach I was unable to achieve that.

This is the code so far I have tried. I used a for loop to limit the number of posts.

<ul class="widget-post-list">
     <?php if (have_posts()) : while (have_posts()) : the_post(); for ($i = 0; $i <2; $i ++){ ?>

     <li>
       <h5 class="post-title"><a href="<?php echo get_permalink() ?>"><?php echo wp_trim_words(get_the_title(), 14); ?></a></h5>
     </li>

     <?php } endwhile; else: ?>
       <h5>No Posts found.</h5>
     <?php endif; ?>
</ul>

Through this code I am only returned the Home page link twice.

What is problem here? or is there any other way that I can try?

1
while will loop the posts, again what is the purpose of looping with 'for', try to use WP_Query with $argscharan kumar
@charankumar while loop will load all the posts available. But I only need the latest 2 posts. So I kept the for loop.Ramesh

1 Answers

2
votes

Use this in order to display 2 posts, you can change the ul li according to your convenience,

you can use posts_per_page option to filter 2 posts

<ul class="widget-post-list">
// Define our WP Query Parameters
<?php $the_query = new WP_Query( 'posts_per_page=2' ); ?>

// Start our WP Query
<?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>

// Display the Post Title with Hyperlink
<li><h5 class="post-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h5></li>

// Repeat the process and reset once it hits the limit
<?php 
endwhile;
wp_reset_postdata();
?>
</ul>