wppaste
WordPress

WP_Query::the_post()

Since
1.5.0
Source
wp-includes/class-wp-query.php:3751
Sets up the current post.

Description

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

Hooks fired · 1

One hook fires while WP_Query::the_post() runs, in this order:

  1. do_action( loop_start )actionline 3793 (+42 into the body)

    Fires once the loop is started.

Uses · 6

Source

	public function the_post() {		global $post; 		if ( ! $this->in_the_loop ) {			if ( 'all' === $this->query_vars['fields'] ) {				// Full post objects queried.				$post_objects = $this->posts;			} else {				if ( 'ids' === $this->query_vars['fields'] ) {					// Post IDs queried.					$post_ids = $this->posts;				} else {					// Only partial objects queried, need to prime the cache for the loop.					$post_ids = array_reduce(						$this->posts,						function ( $carry, $post ) {							if ( isset( $post->ID ) ) {								$carry[] = $post->ID;							} 							return $carry;						},						array()					);				}				_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', $post_ids );			}			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(); 		// Ensure a full post object is available.		if ( 'all' !== $this->query_vars['fields'] ) {			if ( 'ids' === $this->query_vars['fields'] ) {				// Post IDs queried.				$post = get_post( $post );			} elseif ( isset( $post->ID ) ) {				/*				 * Partial objecct queried.				 *				 * The post object was queried with a partial set of				 * fields, populate the entire object for the loop.				 */				$post = get_post( $post->ID );			}		} 		// Set up the global post object for the loop.		$this->setup_postdata( $post );	}

History

Introduced in 1.5.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.8.8 tag, from src/wp-includes/class-wp-query.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.