Support orderby => meta_value
in WP_User_Query
. Adds unit test.
Props wpsmith. Fixes #21581. git-svn-id: https://develop.svn.wordpress.org/trunk@25331 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
270cc9702d
commit
d738f5e586
@ -435,6 +435,8 @@ class WP_User_Query {
|
||||
$orderby = 'post_count';
|
||||
} elseif ( 'ID' == $qv['orderby'] || 'id' == $qv['orderby'] ) {
|
||||
$orderby = 'ID';
|
||||
} elseif ( 'meta_value' == $qv['orderby'] ) {
|
||||
$orderby = "$wpdb->usermeta.meta_value";
|
||||
} else {
|
||||
$orderby = 'user_login';
|
||||
}
|
||||
|
@ -76,4 +76,29 @@ class Tests_User_Query extends WP_UnitTestCase {
|
||||
$this->assertInstanceOf( 'WP_User', $user );
|
||||
}
|
||||
}
|
||||
|
||||
function test_orderby() {
|
||||
$user_ids = $this->factory->user->create_many( 10, array(
|
||||
'role' => 'author'
|
||||
) );
|
||||
|
||||
$names = array( 'd', 'f', 'n', 'f', 'd', 'j', 'r', 'p', 'h', 'g' );
|
||||
|
||||
foreach ( $names as $i => $name )
|
||||
update_user_meta( $user_ids[$i], 'last_name', $name );
|
||||
|
||||
$u = new WP_User_Query( array(
|
||||
'include' => $user_ids,
|
||||
'meta_key' => 'last_name',
|
||||
'orderby' => 'meta_value',
|
||||
'fields' => 'ids'
|
||||
) );
|
||||
$values = array();
|
||||
foreach ( $u->get_results() as $user )
|
||||
$values[] = get_user_meta( $user, 'last_name', true );
|
||||
|
||||
sort( $names );
|
||||
|
||||
$this->assertEquals( $names, $values );
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user