WP_Query::the_post()

In this article

Sets up the current post.

Description

Retrieves the next post, sets up the post, sets the ‘in the loop’ property to true.

Source

public function the_post() {
	global $post;

	if ( ! $this->in_the_loop ) {
		// Only prime the post cache for queries limited to the ID field.
		$post_ids = array_filter( $this->posts, 'is_numeric' );
		// Exclude any falsey values, such as 0.
		$post_ids = array_filter( $post_ids );
		if ( $post_ids ) {
			_prime_post_caches( $post_ids, $this->query_vars['update_post_term_cache'], $this->query_vars['update_post_meta_cache'] );
		}
		$post_objects = array_map( 'get_post', $this->posts );
		update_post_author_caches( $post_objects );
	}

	$this->in_the_loop = true;
	$this->before_loop = false;

	if ( -1 == $this->current_post ) { // Loop has just started.
		/**
		 * Fires once the loop is started.
		 *
		 * @since 2.0.0
		 *
		 * @param WP_Query $query The WP_Query instance (passed by reference).
		 */
		do_action_ref_array( 'loop_start', array( &$this ) );
	}

	$post = $this->next_post();
	$this->setup_postdata( $post );
}

Hooks

do_action_ref_array( ‘loop_start’, WP_Query $query )

Fires once the loop is started.

Changelog

VersionDescription
1.5.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.