Make WordPress Core


Ignore:
Timestamp:
09/17/2020 07:53:47 PM (6 years ago)
Author:
SergeyBiryukov
Message:

Comments: Assign the array of comment data returned from the comments_pre_query filter to the comments property of the current WP_Comment_Query instance.

This avoids the performance overhead of calling WP_Comment_Query::get_comments() twice: first when creating the object instance, then to retrieve the filtered results.

This also makes the filter a bit more consistent with other similar filters, e.g. posts_pre_query, terms_pre_query, or users_pre_query.

Follow-up to [46086].

Props dinhtungdu, imath, spacedmonkey, adamsilverstein, SergeyBiryukov.
Fixes #50521.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-comment-query.php

    r48986 r48990  
    395395                 * - Otherwise the filter should return an array of WP_Comment objects.
    396396                 *
     397                 * Note that if the filter returns an array of comment data, it will be assigned
     398                 * to the `comments` property of the current WP_Comment_Query instance.
     399                 *
     400                 * Filtering functions that require pagination information are encouraged to set
     401                 * the `found_comments` and `max_num_pages` properties of the WP_Comment_Query object,
     402                 * passed to the filter by reference. If WP_Comment_Query does not perform a database
     403                 * query, it will not have enough information to generate these values itself.
     404                 *
    397405                 * @since 5.3.0
     406                 * @since 5.6.0 The returned array of comment data is assigned to the `comments` property
     407                 *              of the current WP_Comment_Query instance.
    398408                 *
    399409                 * @param array|int|null   $comment_data Return an array of comment data to short-circuit WP's comment query,
     
    405415
    406416                if ( null !== $comment_data ) {
     417                        if ( is_array( $comment_data ) && ! $this->query_vars['count'] ) {
     418                                $this->comments = $comment_data;
     419                        }
     420
    407421                        return $comment_data;
    408422                }
Note: See TracChangeset for help on using the changeset viewer.