WordPress.org

Make WordPress Core

Ticket #42327: 42327.2.diff

File 42327.2.diff, 2.7 KB (added by birgire, 3 years ago)
  • src/wp-includes/class-wp-term-query.php

    diff --git src/wp-includes/class-wp-term-query.php src/wp-includes/class-wp-term-query.php
    index d704f5e..e27b686 100644
    class WP_Term_Query { 
    379379                        }
    380380
    381381                        if ( ! $in_hierarchy ) {
    382                                 return array();
     382                                if ( 'count' == $args['fields'] ) {
     383                                        return 0;
     384                                } else {
     385                                        $this->terms = array();
     386                                        return $this->terms;
     387                                }
    383388                        }
    384389                }
    385390
  • tests/phpunit/tests/term/query.php

    diff --git tests/phpunit/tests/term/query.php tests/phpunit/tests/term/query.php
    index 117befa..a3c6c0e 100644
    class Tests_Term_Query extends WP_UnitTestCase { 
    471471                $this->assertSame( $expected, $found2 );
    472472                $this->assertSame( $expected, $found3 );
    473473        }
     474
     475        /**
     476         * The query method should return zero for field as count and parent set.
     477         *
     478         * @ticket 42327
     479         */
     480        public function test_query_should_return_zero_for_field_count_and_parent_set() {
     481                $post_id = self::factory()->post->create();
     482                register_taxonomy( 'wptests_tax', 'post' );
     483
     484                $term_id = self::factory()->term->create( array(
     485                        'taxonomy' => 'wptests_tax',
     486                ) );
     487                wp_set_object_terms( $post_id, array( $term_id ), 'wptests_tax' );
     488
     489                $q = new WP_Term_Query();
     490                $args = array(
     491                        'taxonomy' => 'wptests_tax',
     492                        'parent'   => $term_id,
     493                        'fields'   => 'count',
     494                );
     495                $this->assertSame( 0, $q->query( $args ) );
     496        }
     497
     498        /**
     499         * The query method should return zero for field as count and child_of set.
     500         *
     501         * @ticket 42327
     502         */
     503        public function test_query_should_return_zero_for_field_as_count_and_child_of_set() {
     504                $post_id = self::factory()->post->create();
     505                register_taxonomy( 'wptests_tax', 'post' );
     506
     507                $term_id = self::factory()->term->create( array(
     508                        'taxonomy' => 'wptests_tax',
     509                ) );
     510                wp_set_object_terms( $post_id, array( $term_id ), 'wptests_tax' );
     511
     512                $q = new WP_Term_Query();
     513                $args = array(
     514                        'taxonomy' => 'wptests_tax',
     515                        'child_of' => $term_id,
     516                        'fields'   => 'count',
     517                );
     518                $this->assertSame( 0, $q->query( $args ) );
     519        }
     520
     521        /**
     522         * The terms property should be an empty array for fields not as count and parent set.
     523         *
     524         * @ticket 42327
     525         */
     526        public function test_terms_property_should_be_empty_array_for_field_not_as_count_and_parent_set() {
     527                $post_id = self::factory()->post->create();
     528                register_taxonomy( 'wptests_tax', 'post' );
     529
     530                $term_id = self::factory()->term->create( array(
     531                        'taxonomy' => 'wptests_tax',
     532                ) );
     533                wp_set_object_terms( $post_id, array( $term_id ), 'wptests_tax' );
     534
     535                $q = new WP_Term_Query( array(
     536                        'taxonomy' => 'wptests_tax',
     537                        'parent'   => $term_id,
     538                ) );
     539                $this->assertSame( array(), $q->terms );
     540        }
    474541}