So you want to sort a list of WordPress users by a custom field. You’ve had a look at get_users and noticed that it doesn’t support the same sorting options as get_posts. You can’t just define meta_key => “foo” and orderby => “meta_value” in your query args. So how do you do it?
We can add the “all_with_meta” fields option to our get_users query. This will add each of our custom meta fields as a function on the returned User objects. If you do a var_dump you wont see them, but if you call them, they are there!
With the extra fields loaded into our object, we can use a custom sort in PHP to order the list.
$args = array('fields' => 'all_with_meta');
$users = get_users($args);
// We'll need a custom comparison function to order by the custom field
function sort_team($a, $b){
return ($a->order < $b->order) ? -1 : 1;
}
// Sort using our custom comparison function
usort($users, "sort_team");
foreach ($users as $user){
// Do your thing here
}
Simple.


