mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-10-06 23:58:03 +00:00
Allow get_terms() to fetch terms regardless of taxonomy.
`get_terms()` has historically required that a taxonomy be specified when querying terms. This requirement is related to the fact that terms could formerly be shared between taxonomies, making `$taxonomies` critical for disambiguation. Since terms can no longer be shared as of 4.4, it' s desirable to be able to query for terms regardless of what taxonomy they're in. Because it's now optional to pass taxonomies, it's no longer necessary to have `$taxonomies` as the first (and required) parameter for `get_terms()`. The new function signature is `get_terms( $args )`, where 'taxonomy' can (optionally) be passed as part of the `$args` array. This syntax is more consistent with functions like `get_users()` and `get_posts()`. We've maintained backward compatibility by always giving precedence to the old argument format. If a second parameter is detected, or if it's detected that the first parameter is a list of taxonomy names rather than an `$args` array, `get_terms()` will parse the function arguments in the legacy fashion. Props flixos90, swissspidy, DrewAPicture, boonebgorges. Fixes #35495. git-svn-id: https://develop.svn.wordpress.org/trunk@36614 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -11,6 +11,43 @@ class Tests_Term_getTerms extends WP_UnitTestCase {
|
||||
wp_cache_delete( 'last_changed', 'terms' );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 35495
|
||||
*/
|
||||
public function test_should_accept_an_args_array_containing_taxonomy_for_first_parameter() {
|
||||
register_taxonomy( 'wptests_tax', 'post' );
|
||||
$term = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax' ) );
|
||||
|
||||
$found = get_terms( array(
|
||||
'taxonomy' => 'wptests_tax',
|
||||
'hide_empty' => false,
|
||||
'fields' => 'ids',
|
||||
'update_term_meta_cache' => false,
|
||||
) );
|
||||
|
||||
$this->assertEqualSets( array( $term ), $found );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 35495
|
||||
*/
|
||||
public function test_excluding_taxonomy_arg_should_return_terms_from_all_taxonomies() {
|
||||
register_taxonomy( 'wptests_tax1', 'post' );
|
||||
register_taxonomy( 'wptests_tax2', 'post' );
|
||||
$t1 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax1' ) );
|
||||
$t2 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax2' ) );
|
||||
|
||||
$found = get_terms( array(
|
||||
'hide_empty' => false,
|
||||
'fields' => 'ids',
|
||||
'update_term_meta_cache' => false,
|
||||
) );
|
||||
|
||||
// There may be other terms lying around, so don't do an exact match.
|
||||
$this->assertContains( $t1, $found );
|
||||
$this->assertContains( $t2, $found );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 23326
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user