diff -r 34716fd837a4 -r be944660c56a wp/wp-includes/class-wp-query.php --- a/wp/wp-includes/class-wp-query.php Tue Dec 15 15:52:01 2020 +0100 +++ b/wp/wp-includes/class-wp-query.php Wed Sep 21 18:19:35 2022 +0200 @@ -63,7 +63,7 @@ * Holds the contents of a post, page, category, attachment. * * @since 1.5.0 - * @var object|array + * @var WP_Term|WP_Post_Type|WP_Post|WP_User|null */ public $queried_object; @@ -76,7 +76,7 @@ public $queried_object_id; /** - * Get post database query. + * SQL for the database query. * * @since 2.0.1 * @var string @@ -84,10 +84,10 @@ public $request; /** - * List of posts. + * Array of post objects or post IDs. * * @since 1.5.0 - * @var array + * @var WP_Post[]|int[] */ public $posts; @@ -118,8 +118,11 @@ /** * The current post. * + * This property does not get populated when the `fields` argument is set to + * `ids` or `id=>parent`. + * * @since 1.5.0 - * @var WP_Post + * @var WP_Post|null */ public $post; @@ -127,7 +130,7 @@ * The list of comments for current post. * * @since 2.2.0 - * @var array + * @var WP_Comment[] */ public $comments; @@ -148,10 +151,10 @@ public $current_comment = -1; /** - * Current comment ID. + * Current comment object. * * @since 2.2.0 - * @var int + * @var WP_Comment */ public $comment; @@ -630,13 +633,13 @@ * @type int $attachment_id Attachment post ID. Used for 'attachment' post_type. * @type int|string $author Author ID, or comma-separated list of IDs. * @type string $author_name User 'user_nicename'. - * @type array $author__in An array of author IDs to query from. - * @type array $author__not_in An array of author IDs not to query from. + * @type int[] $author__in An array of author IDs to query from. + * @type int[] $author__not_in An array of author IDs not to query from. * @type bool $cache_results Whether to cache post information. Default true. * @type int|string $cat Category ID or comma-separated list of IDs (this or any children). - * @type array $category__and An array of category IDs (AND in). - * @type array $category__in An array of category IDs (OR in, no children). - * @type array $category__not_in An array of category IDs (NOT in). + * @type int[] $category__and An array of category IDs (AND in). + * @type int[] $category__in An array of category IDs (OR in, no children). + * @type int[] $category__not_in An array of category IDs (NOT in). * @type string $category_name Use category slug (not name, this or any children). * @type array|int $comment_count Filter results by comment count. Provide an integer to match * comment count exactly. Provide an array with integer 'value' @@ -696,15 +699,15 @@ * @type string $pagename Page slug. * @type string $perm Show posts if user has the appropriate capability. * @type string $ping_status Ping status. - * @type array $post__in An array of post IDs to retrieve, sticky posts will be included. - * @type array $post__not_in An array of post IDs not to retrieve. Note: a string of comma- + * @type int[] $post__in An array of post IDs to retrieve, sticky posts will be included. + * @type int[] $post__not_in An array of post IDs not to retrieve. Note: a string of comma- * separated IDs will NOT work. * @type string $post_mime_type The mime type of the post. Used for 'attachment' post_type. - * @type array $post_name__in An array of post slugs that results must match. + * @type string[] $post_name__in An array of post slugs that results must match. * @type int $post_parent Page ID to retrieve child pages for. Use 0 to only retrieve * top-level pages. - * @type array $post_parent__in An array containing parent page IDs to query child pages from. - * @type array $post_parent__not_in An array containing parent page IDs not to query child pages from. + * @type int[] $post_parent__in An array containing parent page IDs to query child pages from. + * @type int[] $post_parent__not_in An array containing parent page IDs not to query child pages from. * @type string|array $post_type A post type slug (string) or array of post type slugs. * Default 'any' if using 'tax_query'. * @type string|array $post_status A post status (string) or array of post statuses. @@ -720,15 +723,15 @@ * @type bool $sentence Whether to search by phrase. Default false. * @type bool $suppress_filters Whether to suppress filters. Default false. * @type string $tag Tag slug. Comma-separated (either), Plus-separated (all). - * @type array $tag__and An array of tag IDs (AND in). - * @type array $tag__in An array of tag IDs (OR in). - * @type array $tag__not_in An array of tag IDs (NOT in). + * @type int[] $tag__and An array of tag IDs (AND in). + * @type int[] $tag__in An array of tag IDs (OR in). + * @type int[] $tag__not_in An array of tag IDs (NOT in). * @type int $tag_id Tag id or comma-separated list of IDs. - * @type array $tag_slug__and An array of tag slugs (AND in). - * @type array $tag_slug__in An array of tag slugs (OR in). unless 'ignore_sticky_posts' is + * @type string[] $tag_slug__and An array of tag slugs (AND in). + * @type string[] $tag_slug__in An array of tag slugs (OR in). unless 'ignore_sticky_posts' is * true. Note: a string of comma-separated IDs will NOT work. * @type array $tax_query An associative array of WP_Tax_Query arguments. - * See WP_Tax_Query->queries. + * See WP_Tax_Query->__construct(). * @type string $title Post title. * @type bool $update_post_meta_cache Whether to update the post meta cache. Default true. * @type bool $update_post_term_cache Whether to update the post term cache. Default true. @@ -759,11 +762,11 @@ $this->is_favicon = true; } - if ( ! is_scalar( $qv['p'] ) || $qv['p'] < 0 ) { + if ( ! is_scalar( $qv['p'] ) || (int) $qv['p'] < 0 ) { $qv['p'] = 0; $qv['error'] = '404'; } else { - $qv['p'] = intval( $qv['p'] ); + $qv['p'] = (int) $qv['p']; } $qv['page_id'] = absint( $qv['page_id'] ); @@ -791,7 +794,7 @@ $qv['menu_order'] = absint( $qv['menu_order'] ); } - // Fairly insane upper bound for search string lengths. + // Fairly large, potentially too large, upper bound for search string lengths. if ( ! is_scalar( $qv['s'] ) || ( ! empty( $qv['s'] ) && strlen( $qv['s'] ) > 1600 ) ) { $qv['s'] = ''; } @@ -942,7 +945,7 @@ $this->is_trackback = true; } - if ( '' != $qv['paged'] && ( intval( $qv['paged'] ) > 1 ) ) { + if ( '' != $qv['paged'] && ( (int) $qv['paged'] > 1 ) ) { $this->is_paged = true; } @@ -1075,7 +1078,7 @@ * * @since 1.5.0 * - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ do_action_ref_array( 'parse_query', array( &$this ) ); } @@ -1115,7 +1118,7 @@ 'field' => 'slug', ); - if ( isset( $t->rewrite['hierarchical'] ) && $t->rewrite['hierarchical'] ) { + if ( ! empty( $t->rewrite['hierarchical'] ) ) { $q[ $t->query_var ] = wp_basename( $q[ $t->query_var ] ); } @@ -1316,7 +1319,7 @@ * * @since 3.7.0 * - * @param WP_Query $this The WP_Query instance. + * @param WP_Query $query The WP_Query instance. */ do_action( 'parse_tax_query', $this ); } @@ -1604,7 +1607,7 @@ // If RAND() contains a seed value, sanitize and add to allowed keys. $rand_with_seed = false; if ( preg_match( '/RAND\(([0-9]+)\)/i', $orderby, $matches ) ) { - $orderby = sprintf( 'RAND(%s)', intval( $matches[1] ) ); + $orderby = sprintf( 'RAND(%s)', (int) $matches[1] ); $allowed_keys[] = $orderby; $rand_with_seed = true; } @@ -1715,19 +1718,19 @@ * * @since 5.5.0 * - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ do_action_ref_array( 'set_404', array( $this ) ); } /** - * Retrieve query variable. + * Retrieves the value of a query variable. * * @since 1.5.0 * @since 3.9.0 The `$default` argument was introduced. * * @param string $query_var Query variable key. - * @param mixed $default Optional. Value to return if the query variable is not set. Default empty. + * @param mixed $default Optional. Value to return if the query variable is not set. Default empty string. * @return mixed Contents of the query variable. */ public function get( $query_var, $default = '' ) { @@ -1739,7 +1742,7 @@ } /** - * Set query variable. + * Sets the value of a query variable. * * @since 1.5.0 * @@ -1758,6 +1761,8 @@ * * @since 1.5.0 * + * @global wpdb $wpdb WordPress database abstraction object. + * * @return WP_Post[]|int[] Array of post objects or post IDs. */ public function get_posts() { @@ -1774,7 +1779,7 @@ * * @since 2.0.0 * - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ do_action_ref_array( 'pre_get_posts', array( &$this ) ); @@ -2121,7 +2126,7 @@ * @since 3.0.0 * * @param string $search Search SQL for WHERE clause. - * @param WP_Query $this The current WP_Query object. + * @param WP_Query $query The current WP_Query object. */ $search = apply_filters_ref_array( 'posts_search', array( $search, &$this ) ); } @@ -2263,7 +2268,7 @@ // Numeric comment count is converted to array format. if ( is_numeric( $q['comment_count'] ) ) { $q['comment_count'] = array( - 'value' => intval( $q['comment_count'] ), + 'value' => (int) $q['comment_count'], ); } @@ -2376,7 +2381,7 @@ * @since 3.7.0 * * @param string $search_orderby The ORDER BY clause. - * @param WP_Query $this The current WP_Query instance. + * @param WP_Query $query The current WP_Query instance. */ $search_orderby = apply_filters( 'posts_search_orderby', $search_orderby, $this ); } @@ -2420,10 +2425,10 @@ if ( empty( $in_search_post_types ) ) { $where .= ' AND 1=0 '; } else { - $where .= " AND {$wpdb->posts}.post_type IN ('" . join( "', '", array_map( 'esc_sql', $in_search_post_types ) ) . "')"; + $where .= " AND {$wpdb->posts}.post_type IN ('" . implode( "', '", array_map( 'esc_sql', $in_search_post_types ) ) . "')"; } } elseif ( ! empty( $post_type ) && is_array( $post_type ) ) { - $where .= " AND {$wpdb->posts}.post_type IN ('" . join( "', '", esc_sql( $post_type ) ) . "')"; + $where .= " AND {$wpdb->posts}.post_type IN ('" . implode( "', '", esc_sql( $post_type ) ) . "')"; } elseif ( ! empty( $post_type ) ) { $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_type = %s", $post_type ); $post_type_object = get_post_type_object( $post_type ); @@ -2485,20 +2490,20 @@ } if ( ! empty( $e_status ) ) { - $statuswheres[] = '(' . join( ' AND ', $e_status ) . ')'; + $statuswheres[] = '(' . implode( ' AND ', $e_status ) . ')'; } if ( ! empty( $r_status ) ) { if ( ! empty( $q['perm'] ) && 'editable' === $q['perm'] && ! current_user_can( $edit_others_cap ) ) { - $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . 'AND (' . join( ' OR ', $r_status ) . '))'; + $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . 'AND (' . implode( ' OR ', $r_status ) . '))'; } else { - $statuswheres[] = '(' . join( ' OR ', $r_status ) . ')'; + $statuswheres[] = '(' . implode( ' OR ', $r_status ) . ')'; } } if ( ! empty( $p_status ) ) { if ( ! empty( $q['perm'] ) && 'readable' === $q['perm'] && ! current_user_can( $read_private_cap ) ) { - $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . 'AND (' . join( ' OR ', $p_status ) . '))'; + $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . 'AND (' . implode( ' OR ', $p_status ) . '))'; } else { - $statuswheres[] = '(' . join( ' OR ', $p_status ) . ')'; + $statuswheres[] = '(' . implode( ' OR ', $p_status ) . ')'; } } if ( $post_status_join ) { @@ -2558,7 +2563,7 @@ * @since 1.5.0 * * @param string $where The WHERE clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $where = apply_filters_ref_array( 'posts_where', array( $where, &$this ) ); @@ -2568,7 +2573,7 @@ * @since 1.5.0 * * @param string $join The JOIN clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $join = apply_filters_ref_array( 'posts_join', array( $join, &$this ) ); } @@ -2593,7 +2598,7 @@ // Comments feeds. if ( $this->is_comment_feed && ! $this->is_singular ) { if ( $this->is_archive || $this->is_search ) { - $cjoin = "JOIN {$wpdb->posts} ON ({$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID) $join "; + $cjoin = "JOIN {$wpdb->posts} ON ( {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID ) $join "; $cwhere = "WHERE comment_approved = '1' $where"; $cgroupby = "{$wpdb->comments}.comment_id"; } else { // Other non-singular, e.g. front. @@ -2609,7 +2614,7 @@ * @since 2.2.0 * * @param string $cjoin The JOIN clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $cjoin = apply_filters_ref_array( 'comment_feed_join', array( $cjoin, &$this ) ); @@ -2619,7 +2624,7 @@ * @since 2.2.0 * * @param string $cwhere The WHERE clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $cwhere = apply_filters_ref_array( 'comment_feed_where', array( $cwhere, &$this ) ); @@ -2629,7 +2634,7 @@ * @since 2.2.0 * * @param string $cgroupby The GROUP BY clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $cgroupby = apply_filters_ref_array( 'comment_feed_groupby', array( $cgroupby, &$this ) ); @@ -2639,7 +2644,7 @@ * @since 2.8.0 * * @param string $corderby The ORDER BY clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $corderby = apply_filters_ref_array( 'comment_feed_orderby', array( 'comment_date_gmt DESC', &$this ) ); @@ -2649,7 +2654,7 @@ * @since 2.8.0 * * @param string $climits The JOIN clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option( 'posts_per_rss' ), &$this ) ); } @@ -2660,6 +2665,7 @@ $comments = (array) $wpdb->get_results( "SELECT $distinct {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits" ); // Convert to WP_Comment. + /** @var WP_Comment[] */ $this->comments = array_map( 'get_comment', $comments ); $this->comment_count = count( $this->comments ); @@ -2669,7 +2675,7 @@ $post_ids[] = (int) $comment->comment_post_ID; } - $post_ids = join( ',', $post_ids ); + $post_ids = implode( ',', $post_ids ); $join = ''; if ( $post_ids ) { $where = "AND {$wpdb->posts}.ID IN ($post_ids) "; @@ -2693,7 +2699,7 @@ * @since 1.5.0 * * @param string $where The WHERE clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $where = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) ); @@ -2703,7 +2709,7 @@ * @since 2.0.0 * * @param string $groupby The GROUP BY clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $groupby = apply_filters_ref_array( 'posts_groupby', array( $groupby, &$this ) ); @@ -2715,7 +2721,7 @@ * @since 1.5.0 * * @param string $join The JOIN clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $join = apply_filters_ref_array( 'posts_join_paged', array( $join, &$this ) ); @@ -2725,7 +2731,7 @@ * @since 1.5.1 * * @param string $orderby The ORDER BY clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $orderby = apply_filters_ref_array( 'posts_orderby', array( $orderby, &$this ) ); @@ -2735,7 +2741,7 @@ * @since 2.1.0 * * @param string $distinct The DISTINCT clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $distinct = apply_filters_ref_array( 'posts_distinct', array( $distinct, &$this ) ); @@ -2745,7 +2751,7 @@ * @since 2.1.0 * * @param string $limits The LIMIT clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) ); @@ -2755,7 +2761,7 @@ * @since 2.1.0 * * @param string $fields The SELECT clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $fields = apply_filters_ref_array( 'posts_fields', array( $fields, &$this ) ); @@ -2768,7 +2774,7 @@ * @since 3.1.0 * * @param string[] $clauses Associative array of the clauses for the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $clauses = (array) apply_filters_ref_array( 'posts_clauses', array( compact( $pieces ), &$this ) ); @@ -2805,7 +2811,7 @@ * @since 2.5.0 * * @param string $where The WHERE clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $where = apply_filters_ref_array( 'posts_where_request', array( $where, &$this ) ); @@ -2817,7 +2823,7 @@ * @since 2.5.0 * * @param string $groupby The GROUP BY clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $groupby = apply_filters_ref_array( 'posts_groupby_request', array( $groupby, &$this ) ); @@ -2829,7 +2835,7 @@ * @since 2.5.0 * * @param string $join The JOIN clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $join = apply_filters_ref_array( 'posts_join_request', array( $join, &$this ) ); @@ -2841,7 +2847,7 @@ * @since 2.5.0 * * @param string $orderby The ORDER BY clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $orderby = apply_filters_ref_array( 'posts_orderby_request', array( $orderby, &$this ) ); @@ -2853,7 +2859,7 @@ * @since 2.5.0 * * @param string $distinct The DISTINCT clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $distinct = apply_filters_ref_array( 'posts_distinct_request', array( $distinct, &$this ) ); @@ -2865,7 +2871,7 @@ * @since 2.5.0 * * @param string $fields The SELECT clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $fields = apply_filters_ref_array( 'posts_fields_request', array( $fields, &$this ) ); @@ -2877,7 +2883,7 @@ * @since 2.5.0 * * @param string $limits The LIMIT clause of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $limits = apply_filters_ref_array( 'post_limits_request', array( $limits, &$this ) ); @@ -2892,7 +2898,7 @@ * @since 3.1.0 * * @param string[] $pieces Associative array of the pieces of the query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $clauses = (array) apply_filters_ref_array( 'posts_clauses_request', array( compact( $pieces ), &$this ) ); @@ -2927,7 +2933,7 @@ * @since 2.0.0 * * @param string $request The complete SQL query. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $this->request = apply_filters_ref_array( 'posts_request', array( $this->request, &$this ) ); } @@ -2935,7 +2941,7 @@ /** * Filters the posts array before the query takes place. * - * Return a non-null value to bypass WordPress's default post queries. + * Return a non-null value to bypass WordPress' default post queries. * * Filtering functions that require pagination information are encouraged to set * the `found_posts` and `max_num_pages` properties of the WP_Query object, @@ -2944,9 +2950,9 @@ * * @since 4.6.0 * - * @param array|null $posts Return an array of post data to short-circuit WP's query, - * or null to allow WP to run its normal queries. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Post[]|int[]|null $posts Return an array of post data to short-circuit WP's query, + * or null to allow WP to run its normal queries. + * @param WP_Query $query The WP_Query instance (passed by reference). */ $this->posts = apply_filters_ref_array( 'posts_pre_query', array( null, &$this ) ); @@ -2955,6 +2961,7 @@ $this->posts = $wpdb->get_col( $this->request ); } + /** @var int[] */ $this->posts = array_map( 'intval', $this->posts ); $this->post_count = count( $this->posts ); $this->set_found_posts( $q, $limits ); @@ -2970,6 +2977,7 @@ $this->post_count = count( $this->posts ); $this->set_found_posts( $q, $limits ); + /** @var int[] */ $r = array(); foreach ( $this->posts as $key => $post ) { $this->posts[ $key ]->ID = (int) $post->ID; @@ -2994,7 +3002,7 @@ * @since 3.4.0 * * @param bool $split_the_query Whether or not to split the query. - * @param WP_Query $this The WP_Query instance. + * @param WP_Query $query The WP_Query instance. */ $split_the_query = apply_filters( 'split_the_query', $split_the_query, $this ); @@ -3009,7 +3017,7 @@ * @since 3.4.0 * * @param string $request The post ID request. - * @param WP_Query $this The WP_Query instance. + * @param WP_Query $query The WP_Query instance. */ $this->request = apply_filters( 'posts_request_ids', $this->request, $this ); @@ -3030,6 +3038,7 @@ // Convert to WP_Post objects. if ( $this->posts ) { + /** @var WP_Post[] */ $this->posts = array_map( 'get_post', $this->posts ); } @@ -3040,7 +3049,7 @@ * @since 2.3.0 * * @param WP_Post[] $posts Array of post objects. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $this->posts = apply_filters_ref_array( 'posts_results', array( $this->posts, &$this ) ); } @@ -3066,6 +3075,7 @@ $comments_request = "SELECT {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits"; $comments = $wpdb->get_results( $comments_request ); // Convert to WP_Comment. + /** @var WP_Comment[] */ $this->comments = array_map( 'get_comment', $comments ); $this->comment_count = count( $this->comments ); } @@ -3122,7 +3132,7 @@ * @since 2.7.0 * * @param WP_Post $post_preview The Post object. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $this->posts[0] = get_post( apply_filters_ref_array( 'the_preview', array( $this->posts[0], &$this ) ) ); } @@ -3185,7 +3195,7 @@ * @since 1.5.0 * * @param WP_Post[] $posts Array of post objects. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ $this->posts = apply_filters_ref_array( 'the_posts', array( $this->posts, &$this ) ); } @@ -3195,12 +3205,14 @@ if ( $this->posts ) { $this->post_count = count( $this->posts ); + /** @var WP_Post[] */ $this->posts = array_map( 'get_post', $this->posts ); if ( $q['cache_results'] ) { update_post_caches( $this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache'] ); } + /** @var WP_Post */ $this->post = reset( $this->posts ); } else { $this->post_count = 0; @@ -3220,11 +3232,14 @@ * * @since 3.5.0 * + * @global wpdb $wpdb WordPress database abstraction object. + * * @param array $q Query variables. * @param string $limits LIMIT clauses of the query. */ 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 ) ) { @@ -3238,7 +3253,7 @@ * @since 2.1.0 * * @param string $found_posts_query The query to run to find the found posts. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @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 ) ); @@ -3261,7 +3276,7 @@ * @since 2.1.0 * * @param int $found_posts The number of posts found. - * @param WP_Query $this The WP_Query instance (passed by reference). + * @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 ) ); @@ -3281,6 +3296,7 @@ $this->current_post++; + /** @var WP_Post */ $this->post = $this->posts[ $this->current_post ]; return $this->post; } @@ -3305,7 +3321,7 @@ * * @since 2.0.0 * - * @param WP_Query $this The WP_Query instance (passed by reference). + * @param WP_Query $query The WP_Query instance (passed by reference). */ do_action_ref_array( 'loop_start', array( &$this ) ); } @@ -3332,7 +3348,7 @@ * * @since 2.0.0 * - * @param WP_Query $this The WP_Query instance (passed by reference). + * @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. @@ -3343,7 +3359,7 @@ * * @since 4.9.0 * - * @param WP_Query $this The WP_Query instance. + * @param WP_Query $query The WP_Query instance. */ do_action( 'loop_no_results', $this ); } @@ -3374,6 +3390,7 @@ public function next_comment() { $this->current_comment++; + /** @var WP_Comment */ $this->comment = $this->comments[ $this->current_comment ]; return $this->comment; } @@ -3449,7 +3466,7 @@ } /** - * Retrieve queried object. + * Retrieves the currently queried object. * * If queried object is not set, then the queried object will be set from * the category, tag, taxonomy, posts page, single post, page, or author @@ -3457,7 +3474,7 @@ * * @since 1.5.0 * - * @return object + * @return WP_Term|WP_Post_Type|WP_Post|WP_User|null The queried object. */ public function get_queried_object() { if ( isset( $this->queried_object ) ) { @@ -3527,7 +3544,7 @@ } /** - * Retrieve ID of the current queried object. + * Retrieves the ID of the currently queried object. * * @since 1.5.0 * @@ -3607,10 +3624,18 @@ /** * Is the query for an existing archive page? * - * Month, Year, Category, Author, Post Type archive... + * Archive pages include category, tag, author, date, custom post type, + * and custom taxonomy based archives. * * @since 3.1.0 * + * @see WP_Query::is_category() + * @see WP_Query::is_tag() + * @see WP_Query::is_author() + * @see WP_Query::is_date() + * @see WP_Query::is_post_type_archive() + * @see WP_Query::is_tax() + * * @return bool Whether the query is for an existing archive page. */ public function is_archive() { @@ -3944,10 +3969,10 @@ * If you set a static page for the front page of your site, this function will return * true only on the page you set as the "Posts page". * + * @since 3.1.0 + * * @see WP_Query::is_front_page() * - * @since 3.1.0 - * * @return bool Whether the query is for the blog homepage. */ public function is_home() { @@ -3994,11 +4019,11 @@ * If the $page parameter is specified, this function will additionally * check if the query is for one of the pages specified. * + * @since 3.1.0 + * * @see WP_Query::is_single() * @see WP_Query::is_singular() * - * @since 3.1.0 - * * @param int|string|int[]|string[] $page Optional. Page ID, title, slug, path, or array of such * to check against. Default empty. * @return bool Whether the query is for an existing single page. @@ -4101,11 +4126,11 @@ * If the $post parameter is specified, this function will additionally * check if the query is for one of the Posts specified. * + * @since 3.1.0 + * * @see WP_Query::is_page() * @see WP_Query::is_singular() * - * @since 3.1.0 - * * @param int|string|int[]|string[] $post Optional. Post ID, title, slug, path, or array of such * to check against. Default empty. * @return bool Whether the query is for an existing single post. @@ -4151,11 +4176,11 @@ * If the $post_types parameter is specified, this function will additionally * check if the query is for one of the Posts Types specified. * + * @since 3.1.0 + * * @see WP_Query::is_page() * @see WP_Query::is_single() * - * @since 3.1.0 - * * @param string|string[] $post_types Optional. Post type or array of post types * to check against. Default empty. * @return bool Whether the query is for an existing single post @@ -4289,10 +4314,10 @@ * Fires once the post data has been set up. * * @since 2.8.0 - * @since 4.1.0 Introduced `$this` parameter. + * @since 4.1.0 Introduced `$query` parameter. * - * @param WP_Post $post The Post object (passed by reference). - * @param WP_Query $this The current Query object (passed by reference). + * @param WP_Post $post The Post object (passed by reference). + * @param WP_Query $query The current Query object (passed by reference). */ do_action_ref_array( 'the_post', array( &$post, &$this ) ); @@ -4305,7 +4330,7 @@ * @since 5.2.0 * * @param WP_Post|object|int $post WP_Post instance or Post ID/object. - * @return array|bool Elements of post or false on failure. + * @return array|false Elements of post or false on failure. */ public function generate_postdata( $post ) {