Taxonomy: No, really, don't pass results of 'count' query through 'get_terms' filter.

[37623] used the wrong parameter name (count=true instead of fields=count).

For greater flexibility and forward compatibility with other potential changes
to the return value of `get_terms()`, we now do a looser check: any non-array
value is excluded from the filter.

Fixes #36992.

git-svn-id: https://develop.svn.wordpress.org/trunk@37634 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges 2016-06-04 12:19:15 +00:00
parent 91859d2098
commit a77ffd8e83
2 changed files with 3 additions and 3 deletions

View File

@ -1209,7 +1209,7 @@ function get_terms( $args = array(), $deprecated = '' ) {
$terms = $term_query->query( $args );
// Count queries are not filtered, for legacy reasons.
if ( $term_query->query_vars['count'] ) {
if ( ! is_array( $terms ) ) {
return $terms;
}

View File

@ -2183,12 +2183,12 @@ class Tests_Term_getTerms extends WP_UnitTestCase {
* @ticket 36992
* @ticket 35381
*/
public function test_count_should_pass_through_main_get_terms_filter() {
public function test_count_should_not_pass_through_main_get_terms_filter() {
add_filter( 'get_terms', array( __CLASS__, 'maybe_filter_count' ) );
$found = get_terms( array(
'hide_empty' => 0,
'count' => true,
'fields' => 'count',
) );
remove_filter( 'get_terms', array( __CLASS__, 'maybe_filter_count' ) );