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. Built from https://develop.svn.wordpress.org/trunk@48990 git-svn-id: http://core.svn.wordpress.org/trunk@48752 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
541796de46
commit
e1a05a42d3
|
@ -394,7 +394,17 @@ class WP_Comment_Query {
|
|||
* an array of comment IDs.
|
||||
* - Otherwise the filter should return an array of WP_Comment objects.
|
||||
*
|
||||
* Note that if the filter returns an array of comment data, it will be assigned
|
||||
* to the `comments` property of the current WP_Comment_Query instance.
|
||||
*
|
||||
* Filtering functions that require pagination information are encouraged to set
|
||||
* the `found_comments` and `max_num_pages` properties of the WP_Comment_Query object,
|
||||
* passed to the filter by reference. If WP_Comment_Query does not perform a database
|
||||
* query, it will not have enough information to generate these values itself.
|
||||
*
|
||||
* @since 5.3.0
|
||||
* @since 5.6.0 The returned array of comment data is assigned to the `comments` property
|
||||
* of the current WP_Comment_Query instance.
|
||||
*
|
||||
* @param array|int|null $comment_data Return an array of comment data to short-circuit WP's comment query,
|
||||
* the comment count as an integer if `$this->query_vars['count']` is set,
|
||||
|
@ -404,6 +414,10 @@ class WP_Comment_Query {
|
|||
$comment_data = apply_filters_ref_array( 'comments_pre_query', array( $comment_data, &$this ) );
|
||||
|
||||
if ( null !== $comment_data ) {
|
||||
if ( is_array( $comment_data ) && ! $this->query_vars['count'] ) {
|
||||
$this->comments = $comment_data;
|
||||
}
|
||||
|
||||
return $comment_data;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '5.6-alpha-48989';
|
||||
$wp_version = '5.6-alpha-48990';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue