WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to get a count of the current posts inside of a loop. I'm using multiple loops on one page in my theme. So far I have:

$my_post_count = $wp_query->post_count;

But when I print $my_post_count, it returns the number all of the posts on my WP site. Could it have something to do with using multiple queries on one page? I tried using wp_reset_query after every loop to make sure I wasn't throwing things off that way. What am I doing wrong?

share|improve this question
up vote 12 down vote accepted

$wp_query hold main loop of page and should not be used to create multiple loops.

If you are using new WP_Query object then your variable that holds it will have according count:

$my_query = new WP_Query();
// stuff
$count = $my_query->post_count;

If you are using get_posts() then WP_Query object is not accessible and you should just count returned set:

$posts = get_posts();
$count = count($posts);
share|improve this answer
thanks! it helped me :) – Daniel Garcia Sanchez Sep 15 '14 at 10:04

I believe the post_count is stored in the global, so before the custom loop you should set it to 0, since you can use it outside the loop, but this depends on how you are structuring your multiple query's, maybe you can add them to your post?

There is another way that I use within the loop that counts posts using current_post + 1, for example.

<?php $my_query = new WP_Query();?>
     <?php if ($my_query->have_posts()) :while ($my_query->have_posts()) : $my_query->the_post();

           $count_posts = $my_query->current_post + 1; //counts posts in loop

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.