Order get_users() by last login date. Is it possible?

I want to create a page that displays all the blog users ordered by the last login date.

I’ve tried with the get_users() function and I can succesfully get the users’ list, but not in the order I want:

$query = get_users('&offset=".$offset."&orderby=login&order=DESC&number=".$number); 

I think that the orderby=login is not what I”m looking for…
Is there any other way to accomplish this?

2 Answers
2

First, you need to store the actual login date, because this is not stored by default. You can use this code to do that(use it in your functions.php)

add_action('wp_login','user_last_login', 0, 2);
function user_last_login($login, $user) {  
    $user = get_user_by('login',$login);
    $now = time();
    update_usermeta( $user->ID, 'user_last_login', $now );
}

After that, you can use the meta field to sort the results:

$query = get_users('&offset=".$offset."&orderby=meta_value&meta_key=user_last_login&order=DESC&number=".$number); 

Leave a Comment