WP_Query::set_found_posts()privateWP 3.5.0

Sets up the amount of found posts and the number of pages (if limit clause was used) for the current query.

Method of the class: WP_Query{}

Hooks from the method

Return

null. Nothing (null).

Usage

// private - for code of main (parent) class only
$result = $this->set_found_posts( $q, $limits );
$q(array) (required)
Query variables.
$limits(string) (required)
LIMIT clauses of the query.

Notes

  • Global. wpdb. $wpdb WordPress database abstraction object.

Changelog

Since 3.5.0 Introduced.

WP_Query::set_found_posts() code WP 6.4.3

private function set_found_posts( $q, $limits ) {
	global $wpdb;

	/*
	 * Bail if posts is an empty array. Continue if posts is an empty string,
	 * null, or false to accommodate caching plugins that fill posts later.
	 */
	if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) ) {
		return;
	}

	if ( ! empty( $limits ) ) {
		/**
		 * Filters the query to run for retrieving the found posts.
		 *
		 * @since 2.1.0
		 *
		 * @param string   $found_posts_query The query to run to find the found posts.
		 * @param WP_Query $query             The WP_Query instance (passed by reference).
		 */
		$found_posts_query = apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) );

		$this->found_posts = (int) $wpdb->get_var( $found_posts_query );
	} else {
		if ( is_array( $this->posts ) ) {
			$this->found_posts = count( $this->posts );
		} else {
			if ( null === $this->posts ) {
				$this->found_posts = 0;
			} else {
				$this->found_posts = 1;
			}
		}
	}

	/**
	 * Filters the number of found posts for the query.
	 *
	 * @since 2.1.0
	 *
	 * @param int      $found_posts The number of posts found.
	 * @param WP_Query $query       The WP_Query instance (passed by reference).
	 */
	$this->found_posts = (int) apply_filters_ref_array( 'found_posts', array( $this->found_posts, &$this ) );

	if ( ! empty( $limits ) ) {
		$this->max_num_pages = ceil( $this->found_posts / $q['posts_per_page'] );
	}
}