Ordering WP_User_Query results by the user IDs used in the include parameter

I think that instead of dealing with complex SQL queries and ways to make WordPress use them, a simple uasort can do the trick:

$uids = array( 1 );

$user_query = new WP_User_Query( array( 'include' => $uids ) );

$users = (array) $user_query->results;

usort( $users, function( $a, $b ) use( $uids ) {
  return array_search( $a->ID, $uids) < array_search( $b->ID, $uids ) ? -1 : 1;
} );

// use as usual
foreach ( $users as $user ) {
    echo '<p>' . $user->display_name . '</p>';
}

Leave a Comment