WP_Query::have_posts(): bool

In this article

Determines whether there are more posts available in the loop.

Description

Calls the ‘loop_end’ action when the loop is complete.

Return

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

Source

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;
}

Hooks

do_action_ref_array( ‘loop_end’, WP_Query $query )

Fires once the loop has ended.

do_action( ‘loop_no_results’, WP_Query $query )

Fires if no results are found in a post query.

Changelog

VersionDescription
1.5.0Introduced.

User Contributed Notes

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