Comments: add a new comments_pre_query filter to short circuit WP_Comment_Query 'get_comments' queries.

Return a non-null value to bypass WordPress's default comment queries.

Props felipeelia, spacedmonkey.
Fixes #45800.



git-svn-id: https://develop.svn.wordpress.org/trunk@46086 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Adam Silverstein
2019-09-10 18:41:03 +00:00
parent 23b6ca3bcb
commit 4ba54c2104
2 changed files with 55 additions and 0 deletions
@@ -379,6 +379,30 @@ class WP_Comment_Query {
$this->meta_query_clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this );
}
$comment_data = null;
/**
* Filter the comments data before the query takes place.
*
* Return a non-null value to bypass WordPress's default comment queries.
*
* The expected return type from this filter depends on the value passed in the request query_vars:
* When $this->query_vars['count'] is set, the filter should return the comment count as an int.
* When `'ids' == $this->query_vars['fields']`, the filter should return an array of comment ids.
* Otherwise the filter should return an array of WP_Comment objects.
*
* @since 5.3.0
*
* @param array|int|null $comment_data Return an array of comment data to short-circuit WP's comment query,
* or null to allow WP to run its normal queries.
* @param WP_Comment_Query $this The WP_Comment_Query instance, passed by reference.
*/
$comment_data = apply_filters_ref_array( 'comments_pre_query', array( $comment_data, &$this ) );
if ( null !== $comment_data ) {
return $comment_data;
}
/*
* Only use the args defined in the query_var_defaults to compute the key,
* but ignore 'fields', which does not affect query results.