From d56791a5c4694b738f0155d2829664c065e99858 Mon Sep 17 00:00:00 2001 From: Jonny Harris Date: Mon, 20 May 2024 21:19:21 +0000 Subject: [PATCH] Query: Add more context to the split_the_query filter. Add more context to the `split_the_query` filter by adding two new parameters: '$old_request' and '$clauses'. This enriches the filter with additional information about the SQL query before the query is run, enabling developers to have more context to help decide if a query should be split. Props spacedmonkey, shailu25, rcorrales, tillkruess. Fixes #59514. git-svn-id: https://develop.svn.wordpress.org/trunk@58180 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-query.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php index 349faee891c48..d25493dc5c4e1 100644 --- a/src/wp-includes/class-wp-query.php +++ b/src/wp-includes/class-wp-query.php @@ -3313,11 +3313,24 @@ public function get_posts() { * complete row at once. One massive result vs. many small results. * * @since 3.4.0 + * @since 6.6.0 Added the `$old_request` and `$clauses` parameters. * * @param bool $split_the_query Whether or not to split the query. * @param WP_Query $query The WP_Query instance. + * @param string $old_request The complete SQL query before filtering. + * @param string[] $clauses { + * Associative array of the clauses for the query. + * + * @type string $where The WHERE clause of the query. + * @type string $groupby The GROUP BY clause of the query. + * @type string $join The JOIN clause of the query. + * @type string $orderby The ORDER BY clause of the query. + * @type string $distinct The DISTINCT clause of the query. + * @type string $fields The SELECT clause of the query. + * @type string $limits The LIMIT clause of the query. + * } */ - $split_the_query = apply_filters( 'split_the_query', $split_the_query, $this ); + $split_the_query = apply_filters( 'split_the_query', $split_the_query, $this, $old_request, compact( $pieces ) ); if ( $split_the_query ) { // First get the IDs and then fill in the objects.