WP_Query::have_posts()publicWP 1.5.0

Determines whether there are more posts available in the loop.

Calls the loop_end action when the loop is complete.

Method of the class: WP_Query{}

Hooks from the method

Return

true|false. True if posts are available, false if end of the loop.

Usage

global $wp_query;
$wp_query->have_posts();

Changelog

Since 1.5.0 Introduced.

WP_Query::have_posts() code WP 6.5.2

public function have_posts() {
	if ( $this->current_post + 1 < $this->post_count ) {
		return true;
	} elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) {
		/**
		 * Fires once the loop has ended.
		 *
		 * @since 2.0.0
		 *
		 * @param WP_Query $query The WP_Query instance (passed by reference).
		 */
		do_action_ref_array( 'loop_end', array( &$this ) );
		// Do some cleaning up after the loop.
		$this->rewind_posts();
	} elseif ( 0 === $this->post_count ) {
		$this->before_loop = false;

		/**
		 * Fires if no results are found in a post query.
		 *
		 * @since 4.9.0
		 *
		 * @param WP_Query $query The WP_Query instance.
		 */
		do_action( 'loop_no_results', $this );
	}

	$this->in_the_loop = false;
	return false;
}