WordPress.org

Make WordPress Core

Ticket #40496: 40496.diff

File 40496.diff, 2.2 KB (added by boonebgorges, 5 years ago)
  • src/wp-includes/taxonomy.php

    diff --git src/wp-includes/taxonomy.php src/wp-includes/taxonomy.php
    index 94f36689fd..f91e7b44de 100644
    function wp_get_object_terms($object_ids, $taxonomies, $args = array()) { 
    18391839                $object_ids = array($object_ids);
    18401840        $object_ids = array_map('intval', $object_ids);
    18411841
     1842        if ( count( $taxonomies ) > 1 ) {
     1843                foreach ( $taxonomies as $index => $taxonomy ) {
     1844                        $t = get_taxonomy( $taxonomy );
     1845                        if ( isset( $t->args ) && is_array( $t->args ) && $args != array_merge( $args, $t->args ) ) {
     1846                                unset( $taxonomies[ $index ] );
     1847                                $terms = array_merge( $terms, wp_get_object_terms( $object_ids, $taxonomy, array_merge( $args, $t->args ) ) );
     1848                        }
     1849                }
     1850        } else {
     1851                $t = get_taxonomy( $taxonomies[0] );
     1852                if ( isset( $t->args ) && is_array( $t->args ) ) {
     1853                        $args = array_merge( $args, $t->args );
     1854                }
     1855        }
    18421856        $args = wp_parse_args( $args );
    18431857
    18441858        $args['taxonomy'] = $taxonomies;
  • tests/phpunit/tests/term/query.php

    diff --git tests/phpunit/tests/term/query.php tests/phpunit/tests/term/query.php
    index 4a15f1e53f..826913f9f9 100644
    class Tests_Term_Query extends WP_UnitTestCase { 
    381381                $count = $query->get_terms();
    382382                $this->assertEquals( 1, $count );
    383383        }
     384
     385        /**
     386         * @ticket 40496
     387         */
     388        public function test_get_the_terms_should_respect_taxonomy_orderby() {
     389                register_taxonomy( 'wptests_tax', 'post', array(
     390                        'sort' => true,
     391                        'args' => array(
     392                                'orderby' => 'term_order',
     393                        ),
     394                ) );
     395                $term_ids = self::factory()->term->create_many( 2, array(
     396                        'taxonomy' => 'wptests_tax',
     397                ) );
     398                $post_id = self::factory()->post->create();
     399                wp_set_object_terms( $post_id, array( $term_ids[0], $term_ids[1] ), 'wptests_tax' );
     400                $terms = get_the_terms( $post_id, 'wptests_tax' );
     401                $this->assertEquals( array( $term_ids[0], $term_ids[1] ), wp_list_pluck( $terms, 'term_id' ) );
     402                // Flip the order
     403                wp_set_object_terms( $post_id, array( $term_ids[1], $term_ids[0] ), 'wptests_tax' );
     404                $terms = get_the_terms( $post_id, 'wptests_tax' );
     405                $this->assertEquals( array( $term_ids[1], $term_ids[0] ), wp_list_pluck( $terms, 'term_id' ) );
     406        }
    384407}