Taxonomy: Increase cache hits in WP_Term_Query when using include and exclude parameters.

Ensure that empty values of include and exclude passed to the parameters of `WP_Term_Query`, reused existing caches by 
resetting values to an empty array. 

Props Spacedmonkey, peterwilsoncc, hellofromtonya.
Follow-up to [52970].
See #55352.



git-svn-id: https://develop.svn.wordpress.org/trunk@53309 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jonny Harris
2022-04-29 12:34:35 +00:00
parent 34ecbc808c
commit 5866165adf
2 changed files with 78 additions and 0 deletions

View File

@@ -457,6 +457,14 @@ class WP_Term_Query {
"tt.taxonomy IN ('" . implode( "', '", array_map( 'esc_sql', $taxonomies ) ) . "')";
}
if ( empty( $args['exclude'] ) ) {
$args['exclude'] = array();
}
if ( empty( $args['include'] ) ) {
$args['include'] = array();
}
$exclude = $args['exclude'];
$exclude_tree = $args['exclude_tree'];
$include = $args['include'];

View File

@@ -3146,6 +3146,76 @@ class Tests_Term_getTerms extends WP_UnitTestCase {
'term_taxonomy_id' => array(),
),
),
'array exclude vs no exclude' => array(
array(
'taxonomy' => self::$taxonomy,
'fields' => 'ids',
),
array(
'taxonomy' => self::$taxonomy,
'fields' => 'all',
'exclude' => array(),
),
),
'array exclude vs zero exclude' => array(
array(
'taxonomy' => self::$taxonomy,
'fields' => 'ids',
'exclude' => 0,
),
array(
'taxonomy' => self::$taxonomy,
'fields' => 'all',
'exclude' => array(),
),
),
'array exclude vs string exclude' => array(
array(
'taxonomy' => self::$taxonomy,
'fields' => 'ids',
'exclude' => '',
),
array(
'taxonomy' => self::$taxonomy,
'fields' => 'all',
'exclude' => array(),
),
),
'array include vs no include' => array(
array(
'taxonomy' => self::$taxonomy,
'fields' => 'ids',
),
array(
'taxonomy' => self::$taxonomy,
'fields' => 'all',
'include' => array(),
),
),
'array include vs zero include' => array(
array(
'taxonomy' => self::$taxonomy,
'fields' => 'ids',
'include' => 0,
),
array(
'taxonomy' => self::$taxonomy,
'fields' => 'all',
'include' => array(),
),
),
'array include vs string include' => array(
array(
'taxonomy' => self::$taxonomy,
'fields' => 'ids',
'include' => '',
),
array(
'taxonomy' => self::$taxonomy,
'fields' => 'all',
'include' => array(),
),
),
'array 1 slug vs string slug' => array(
array(
'taxonomy' => self::$taxonomy,