[wp-hackers] New proposed function: in_loop() to determine "in the loop" status

Mark Jaquith mark.wordpress at txfx.net
Sat Jul 16 22:36:40 GMT 2005


Until now, there's been no good way to figure out if you are currently 
in "the loop."  There were hacky methods, such as checking $post or 
$wp_query->current_post against $wp_query->post_count, but those methods 
either fail after the loop, or on the last post in the loop.

I've created a ticket with a set of patches that will fix this.
http://trac.wordpress.org/ticket/1518

in_loop() returns true or false, depending on your in-the-loop status.

A new var for the WP_Query class, $in_loop, stores the status.  On each 
the_post() call, which calls $wp_query->the_post, the $in_loop var is 
set as true, as you are beginning a loop iteration.

The loop is ended when have_posts() (again, $wp_query->have_posts()) 
returns false.  I modified $wp_query->have_posts() to be aware that it 
has reached the last post, and to do the following:
1) set $in_loop false (that's the end of the loop)
2) run rewind_posts(), so that it is really easy to run through the loop 
again
3) unset the global $post object.  Normally this is left filled to the 
end of the page, and that's bloody useless.  The loop is over, this 
transient object needs to leave.

This also partially addresses this ticket:
http://trac.wordpress.org/ticket/977

How's this sound?

-- 
Mark Jaquith
http://txfx.net/
MCincubus @ #wordpress



More information about the wp-hackers mailing list