WordPress.org

Make WordPress Core

Ticket #13661: 13661.2.diff

File 13661.2.diff, 3.8 KB (added by wonderboymusic, 5 years ago)
  • tests/tests/term/getTerms.php

     
    8787                $terms = get_terms( array( '111' => 'post_tag' ), array( 'hide_empty' => false ) );
    8888                $this->assertEquals( $term_id, $terms[0]->term_id );
    8989        }
     90
     91        /**
     92         * @ticket 13661
     93         */
     94        function test_get_terms_fields() {
     95                $term_id1 = $this->factory->tag->create( array( 'slug' => 'woo', 'name' => 'WOO!' ) );
     96                $term_id2 = $this->factory->tag->create( array( 'slug' => 'hoo', 'name' => 'HOO!', 'parent' => $term_id1 ) );
     97
     98                $terms_id_parent = get_terms( 'post_tag', array( 'hide_empty' => false, 'fields' => 'id=>parent' ) );
     99                $this->assertEquals( array(
     100                        $term_id1 => 0,
     101                        $term_id2 => $term_id1
     102                ), $terms_id_parent );
     103
     104                $terms_ids = get_terms( 'post_tag', array( 'hide_empty' => false, 'fields' => 'ids' ) );
     105                $this->assertEqualSets( array( $term_id1, $term_id2 ), $terms_ids );
     106
     107                $terms_name = get_terms( 'post_tag', array( 'hide_empty' => false, 'fields' => 'names' ) );
     108                $this->assertEqualSets( array( 'WOO!', 'HOO!' ), $terms_name );
     109
     110                $terms_id_name = get_terms( 'post_tag', array( 'hide_empty' => false, 'fields' => 'id=>name' ) );
     111                $this->assertEquals( array(
     112                        $term_id1 => 'WOO!',
     113                        $term_id2 => 'HOO!',
     114                ), $terms_id_name );
     115
     116                $terms_id_slug = get_terms( 'post_tag', array( 'hide_empty' => false, 'fields' => 'id=>slug' ) );
     117                $this->assertEquals( array(
     118                        $term_id1 => 'woo',
     119                        $term_id2 => 'hoo'
     120                ), $terms_id_slug );
     121        }
    90122}
  • src/wp-includes/taxonomy.php

     
    13721372        $selects = array();
    13731373        switch ( $fields ) {
    13741374                case 'all':
    1375                         $selects = array('t.*', 'tt.*');
     1375                        $selects = array( 't.*', 'tt.*' );
    13761376                        break;
    13771377                case 'ids':
    13781378                case 'id=>parent':
    1379                         $selects = array('t.term_id', 'tt.parent', 'tt.count');
     1379                        $selects = array( 't.term_id', 'tt.parent', 'tt.count' );
    13801380                        break;
    13811381                case 'names':
    1382                         $selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name');
     1382                        $selects = array( 't.term_id', 'tt.parent', 'tt.count', 't.name' );
    13831383                        break;
    13841384                case 'count':
    13851385                        $orderby = '';
    13861386                        $order = '';
    1387                         $selects = array('COUNT(*)');
     1387                        $selects = array( 'COUNT(*)' );
     1388                        break;
     1389                case 'id=>name':
     1390                        $selects = array( 't.term_id', 't.name' );
     1391                        break;
     1392                case 'id=>slug':
     1393                        $selects = array( 't.term_id', 't.slug' );
     1394                        break;
    13881395        }
    13891396
    13901397        $_fields = $fields;
     
    14431450                        }
    14441451                }
    14451452        }
    1446         reset ( $terms );
     1453        reset( $terms );
    14471454
    14481455        $_terms = array();
    14491456        if ( 'id=>parent' == $fields ) {
    1450                 while ( $term = array_shift($terms) )
     1457                while ( $term = array_shift( $terms ) )
    14511458                        $_terms[$term->term_id] = $term->parent;
    1452                 $terms = $_terms;
    14531459        } elseif ( 'ids' == $fields ) {
    1454                 while ( $term = array_shift($terms) )
     1460                while ( $term = array_shift( $terms ) )
    14551461                        $_terms[] = $term->term_id;
    1456                 $terms = $_terms;
    14571462        } elseif ( 'names' == $fields ) {
    1458                 while ( $term = array_shift($terms) )
     1463                while ( $term = array_shift( $terms ) )
    14591464                        $_terms[] = $term->name;
    1460                 $terms = $_terms;
     1465        } elseif ( 'id=>name' == $fields ) {
     1466                while ( $term = array_shift( $terms ) )
     1467                        $_terms[$term->term_id] = $term->name;
     1468        } elseif ( 'id=>slug' == $fields ) {
     1469                while ( $term = array_shift( $terms ) )
     1470                        $_terms[$term->term_id] = $term->slug;
    14611471        }
    14621472
     1473        if ( ! empty( $_terms ) )
     1474                $terms = $_terms;
     1475
    14631476        if ( $number && is_array( $terms ) && count( $terms ) > $number )
    14641477                $terms = array_slice( $terms, $offset, $number );
    14651478
    14661479        wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
    14671480
    1468         $terms = apply_filters('get_terms', $terms, $taxonomies, $args);
     1481        $terms = apply_filters( 'get_terms', $terms, $taxonomies, $args );
    14691482        return $terms;
    14701483}
    14711484