wp-includes/class-wp-query.php:3685Sets up the current post.
One hook fires while WP_Query::the_post() runs, in this order:
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 ); }Introduced in 1.5.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
src/wp-includes/class-wp-query.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.