This method was posted by someone on the WordPress forum to get the post “number” (1, 2, 3, 4, etc) from its ID (Which is not sequentially ordered). I modified it a bit to only query for slides.
function Get_Post_Number($postID){
$temp_query = $wp_query;
$postNumberQuery = new WP_Query(array(
'ignore_sticky_posts' => 1,
'posts_per_page' => 20,
'post_type' => 'slide'));
$counter = 0;
$postCount = 0;
if($postNumberQuery->have_posts()) :
while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post();
if ($postID == get_the_ID()){
$postCount = $counter;
} else {
$counter++;
}
endwhile; endif;
wp_reset_query();
$wp_query = $temp_query;
return $postCount;
}
It works fine when called once, and will return the correct number.
Get_Post_Number(get_the_ID()) //Returns 3 (for instance)
But when called twice, it no longer works:
Get_Post_Number(get_the_ID()) //Returns 3 (for instance)
Get_Post_Number(get_the_ID()) //Returns 0 (wrong!)
This leads me to believe that the function has side-effects, but I’m not sure how to undo them. WordPress says to call wp_reset_query()
after you do your own “custom loop,” but the function already does that.
What should I do?
I just removed the
wp_reset_query()
and it worked. (Even though WordPress tells you to call that!?)