diff --git a/wp-includes/query.php b/wp-includes/query.php index 882d027914..615d8cf7bd 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -2770,18 +2770,20 @@ class WP_Query { if ( !$q['suppress_filters'] ) $this->posts = apply_filters_ref_array('the_posts', array( $this->posts, &$this ) ); - $this->post_count = count( $this->posts ); - // Ensure that any posts added/modified via one of the filters above are // of the type WP_Post and are filtered. - if ( $this->posts ) + if ( $this->posts ) { + $this->post_count = count( $this->posts ); + $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']); + if ( $q['cache_results'] ) + update_post_caches($this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache']); - if ( $this->post_count > 0 ) { - $this->post = $this->posts[0]; + $this->post = reset( $this->posts ); + } else { + $this->post_count = 0; + $this->posts = array(); } return $this->posts;