Make WordPress Core

Ticket #37184: 37184.diff

File 37184.diff, 3.3 KB (added by spacedmonkey, 8 years ago)
  • src/wp-includes/class-wp-comment-query.php

     
    394394                        $last_changed = microtime();
    395395                        wp_cache_set( 'last_changed', $last_changed, 'comment' );
    396396                }
    397                 $cache_key = "get_comment_ids:$key:$last_changed";
    398397
    399                 $comment_ids = wp_cache_get( $cache_key, 'comment' );
    400                 if ( false === $comment_ids ) {
     398                $cache_key   = "get_comments:$key:$last_changed";
     399                $cache_value = wp_cache_get( $cache_key, 'sites' );
     400                if ( false === $cache_value ) {
    401401                        $comment_ids = $this->get_comment_ids();
    402                         wp_cache_add( $cache_key, $comment_ids, 'comment' );
    403                 }
     402                        if ( $comment_ids ) {
     403                                $this->set_found_comments();
     404                        }
    404405
     406                        $cache_value = array(
     407                                'comment_ids'    => $comment_ids,
     408                                'found_comments' => $this->found_comments,
     409                                'max_num_pages'  => $this->max_num_pages,
     410                        );
     411                        wp_cache_add( $cache_key, $cache_value, 'sites' );
     412                } else {
     413                        $comment_ids          = $cache_value['comment_ids'];
     414                        $this->found_comments = $cache_value['found_comments'];
     415                        $this->max_num_pages  = $cache_value['max_num_pages'];
     416                }
     417
    405418                // If querying for a count only, there's nothing more to do.
    406419                if ( $this->query_vars['count'] ) {
    407420                        // $comment_ids is actually a count in this case.
     
    412425
    413426                $this->comment_count = count( $this->comments );
    414427
    415                 if ( $comment_ids && $this->query_vars['number'] && ! $this->query_vars['no_found_rows'] ) {
    416                         /**
    417                          * Filters the query used to retrieve found comment count.
    418                          *
    419                          * @since 4.4.0
    420                          *
    421                          * @param string           $found_comments_query SQL query. Default 'SELECT FOUND_ROWS()'.
    422                          * @param WP_Comment_Query $comment_query        The `WP_Comment_Query` instance.
    423                          */
    424                         $found_comments_query = apply_filters( 'found_comments_query', 'SELECT FOUND_ROWS()', $this );
    425                         $this->found_comments = (int) $wpdb->get_var( $found_comments_query );
    426 
    427                         $this->max_num_pages = ceil( $this->found_comments / $this->query_vars['number'] );
    428                 }
    429 
    430428                if ( 'ids' == $this->query_vars['fields'] ) {
    431429                        $this->comments = $comment_ids;
    432430                        return $this->comments;
     
    903901        }
    904902
    905903        /**
     904         * Populates found_comments and max_num_pages properties for the current query
     905         * if the limit clause was used.
     906         *
     907         * @since 4.6.0
     908         * @access private
     909         *
     910         * @global wpdb $wpdb WordPress database abstraction object.
     911         */
     912        private function set_found_comments() {
     913                global $wpdb;
     914
     915                if ( $this->query_vars['number'] && ! $this->query_vars['no_found_rows'] ) {
     916                        /**
     917                         * Filters the query used to retrieve found comment count.
     918                         *
     919                         * @since 4.4.0
     920                         *
     921                         * @param string $found_comments_query SQL query. Default 'SELECT FOUND_ROWS()'.
     922                         * @param WP_Comment_Query $comment_query The `WP_Comment_Query` instance.
     923                         */
     924                        $found_comments_query = apply_filters( 'found_comments_query', 'SELECT FOUND_ROWS()', $this );
     925
     926                        $this->found_comments   = (int) $wpdb->get_var( $found_comments_query );
     927                        $this->max_num_pages = ceil( $this->found_comments / $this->query_vars['number'] );
     928                }
     929        }
     930
     931        /**
    906932         * Fetch descendants for located comments.
    907933         *
    908934         * Instead of calling `get_children()` separately on each child comment, we do a single set of queries to fetch