mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 12:20:22 +00:00
Improve querying for terms with falsey names and slugs.
Prior to [38677], `get_term_by()` would always return false if an empty string were passed as the queried 'name' or 'slug'. The refactor to use `get_terms()` broke this behavior; inappropriately imprecise `empty()` checks caused the 'name' or 'slug' clause to be discarded altogether when fetching terms, resulting in an incorrect term being returned from the function. We fix the regression by special-casing truly empty values passed to `get_term_by()`, and ensuring that `WP_Term_Query` is properly able to handle `0` and `'0'` term queries. Props sstoqnov. Fixes #21760. git-svn-id: https://develop.svn.wordpress.org/trunk@40293 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -835,6 +835,15 @@ function get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter
|
||||
return false;
|
||||
}
|
||||
|
||||
// No need to perform a query for empty 'slug' or 'name'.
|
||||
if ( 'slug' === $field || 'name' === $field ) {
|
||||
$value = (string) $value;
|
||||
|
||||
if ( 0 === strlen( $value ) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'id' === $field || 'term_id' === $field ) {
|
||||
$term = get_term( (int) $value, $taxonomy, $output, $filter );
|
||||
if ( is_wp_error( $term ) || null === $term ) {
|
||||
|
||||
Reference in New Issue
Block a user