Make WordPress Core

Changeset 25331


Ignore:
Timestamp:
09/10/2013 11:09:10 PM (13 years ago)
Author:
wonderboymusic
Message:

Support orderby => meta_value in WP_User_Query. Adds unit test.

Props wpsmith.
Fixes #21581.

Location:
trunk
Files:
2 edited

Legend:

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

    r25231 r25331  
    436436                } elseif ( 'ID' == $qv['orderby'] || 'id' == $qv['orderby'] ) {
    437437                        $orderby = 'ID';
     438                } elseif ( 'meta_value' == $qv['orderby'] ) {
     439                        $orderby = "$wpdb->usermeta.meta_value";
    438440                } else {
    439441                        $orderby = 'user_login';
  • trunk/tests/phpunit/tests/user/query.php

    r25002 r25331  
    7777                }
    7878        }
     79
     80        function test_orderby() {
     81                $user_ids = $this->factory->user->create_many( 10, array(
     82                        'role' => 'author'
     83                ) );
     84
     85                $names = array( 'd', 'f', 'n', 'f', 'd', 'j', 'r', 'p', 'h', 'g' );
     86
     87                foreach ( $names as $i => $name )
     88                        update_user_meta( $user_ids[$i], 'last_name', $name );
     89
     90                $u = new WP_User_Query( array(
     91                        'include' => $user_ids,
     92                        'meta_key' => 'last_name',
     93                        'orderby' => 'meta_value',
     94                        'fields' => 'ids'
     95                ) );
     96                $values = array();
     97                foreach ( $u->get_results() as $user )
     98                        $values[] = get_user_meta( $user, 'last_name', true );
     99
     100                sort( $names );
     101
     102                $this->assertEquals( $names, $values );
     103        }
    79104}
Note: See TracChangeset for help on using the changeset viewer.