Make WordPress Core


Ignore:
Timestamp:
08/29/2013 03:18:08 PM (13 years ago)
Author:
wonderboymusic
Message:

Support id=>name and id=>slug values for fields arg in get_terms(). Adds unit tests.

Props mikeschinkel.

Fixes #13661.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/taxonomy.php

    r25142 r25161  
    13841384        switch ( $fields ) {
    13851385                case 'all':
    1386                         $selects = array('t.*', 'tt.*');
     1386                        $selects = array( 't.*', 'tt.*' );
    13871387                        break;
    13881388                case 'ids':
    13891389                case 'id=>parent':
    1390                         $selects = array('t.term_id', 'tt.parent', 'tt.count');
     1390                        $selects = array( 't.term_id', 'tt.parent', 'tt.count' );
    13911391                        break;
    13921392                case 'names':
    1393                         $selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name');
     1393                        $selects = array( 't.term_id', 'tt.parent', 'tt.count', 't.name' );
    13941394                        break;
    13951395                case 'count':
    13961396                        $orderby = '';
    13971397                        $order = '';
    1398                         $selects = array('COUNT(*)');
     1398                        $selects = array( 'COUNT(*)' );
     1399                        break;
     1400                case 'id=>name':
     1401                        $selects = array( 't.term_id', 't.name' );
     1402                        break;
     1403                case 'id=>slug':
     1404                        $selects = array( 't.term_id', 't.slug' );
     1405                        break;
    13991406        }
    14001407
     
    14551462                }
    14561463        }
    1457         reset ( $terms );
     1464        reset( $terms );
    14581465
    14591466        $_terms = array();
    14601467        if ( 'id=>parent' == $fields ) {
    1461                 while ( $term = array_shift($terms) )
     1468                while ( $term = array_shift( $terms ) )
    14621469                        $_terms[$term->term_id] = $term->parent;
     1470        } elseif ( 'ids' == $fields ) {
     1471                while ( $term = array_shift( $terms ) )
     1472                        $_terms[] = $term->term_id;
     1473        } elseif ( 'names' == $fields ) {
     1474                while ( $term = array_shift( $terms ) )
     1475                        $_terms[] = $term->name;
     1476        } elseif ( 'id=>name' == $fields ) {
     1477                while ( $term = array_shift( $terms ) )
     1478                        $_terms[$term->term_id] = $term->name;
     1479        } elseif ( 'id=>slug' == $fields ) {
     1480                while ( $term = array_shift( $terms ) )
     1481                        $_terms[$term->term_id] = $term->slug;
     1482        }
     1483
     1484        if ( ! empty( $_terms ) )
    14631485                $terms = $_terms;
    1464         } elseif ( 'ids' == $fields ) {
    1465                 while ( $term = array_shift($terms) )
    1466                         $_terms[] = $term->term_id;
    1467                 $terms = $_terms;
    1468         } elseif ( 'names' == $fields ) {
    1469                 while ( $term = array_shift($terms) )
    1470                         $_terms[] = $term->name;
    1471                 $terms = $_terms;
    1472         }
    14731486
    14741487        if ( $number && is_array( $terms ) && count( $terms ) > $number )
     
    14771490        wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
    14781491
    1479         $terms = apply_filters('get_terms', $terms, $taxonomies, $args);
     1492        $terms = apply_filters( 'get_terms', $terms, $taxonomies, $args );
    14801493        return $terms;
    14811494}
Note: See TracChangeset for help on using the changeset viewer.