WordPress.org

Make WordPress Core

Ticket #36881: 36881.patch

File 36881.patch, 2.4 KB (added by spacedmonkey, 4 years ago)
  • src/wp-includes/query.php

     
    36083608
    36093609                        if ( $ids ) {
    36103610                                $this->posts = $ids;
    3611                                 $this->set_found_posts( $q, $limits );
    36123611                                _prime_post_caches( $ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] );
    36133612                        } else {
    36143613                                $this->posts = array();
     
    36153614                        }
    36163615                } else {
    36173616                        $this->posts = $wpdb->get_results( $this->request );
    3618                         $this->set_found_posts( $q, $limits );
    36193617                }
    36203618
    36213619                // Convert to WP_Post objects
     
    36343632                        $this->posts = apply_filters_ref_array( 'posts_results', array( $this->posts, &$this ) );
    36353633                }
    36363634
     3635                if ( ! empty( $this->posts ) ) {
     3636                        $this->set_found_posts( $q, $limits );
     3637                }
     3638
    36373639                if ( !empty($this->posts) && $this->is_comment_feed && $this->is_singular ) {
    36383640                        /** This filter is documented in wp-includes/query.php */
    36393641                        $cjoin = apply_filters_ref_array( 'comment_feed_join', array( '', &$this ) );
     
    38043806        private function set_found_posts( $q, $limits ) {
    38053807                global $wpdb;
    38063808
    3807                 // Bail if posts is an empty array. Continue if posts is an empty string,
    3808                 // null, or false to accommodate caching plugins that fill posts later.
    3809                 if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) )
    3810                         return;
    3811 
    3812                 if ( ! empty( $limits ) ) {
    3813                         /**
    3814                          * Filter the query to run for retrieving the found posts.
    3815                          *
    3816                          * @since 2.1.0
    3817                          *
    3818                          * @param string   $found_posts The query to run to find the found posts.
    3819                          * @param WP_Query &$this       The WP_Query instance (passed by reference).
    3820                          */
    3821                         $this->found_posts = $wpdb->get_var( apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ) );
    3822                 } else {
    3823                         $this->found_posts = count( $this->posts );
     3809                if ( is_array( $this->posts ) ) {
     3810                        if ( empty( $limits ) ) {
     3811                                $this->found_posts = count( $this->posts );
     3812                        } else if ( ! $q['no_found_rows'] ) {
     3813                                /**
     3814                                 * Filter the query to run for retrieving the found posts.
     3815                                 *
     3816                                 * @since 2.1.0
     3817                                 *
     3818                                 * @param string   $found_posts The query to run to find the found posts.
     3819                                 * @param WP_Query &$this       The WP_Query instance (passed by reference).
     3820                                 */
     3821                                $this->found_posts = $wpdb->get_var( apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ) );
     3822                        }
    38243823                }
    38253824
    38263825                /**