WordPress.org

Make WordPress Core

Ticket #13661: 13661.2.diff

File 13661.2.diff, 3.8 KB (added by wonderboymusic, 11 months 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