web-dev-qa-db-fra.com

Commandez get_users () avant la dernière date de connexion. C'est possible?

Je souhaite créer une page qui affiche tous les utilisateurs du blog classés par date de dernière connexion.

J'ai essayé avec la fonction get_users () et je peux obtenir avec succès la liste des utilisateurs, mais pas dans l'ordre que je veux:

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

Je pense que le orderby = login n'est pas ce que je recherche ... Existe-t-il un autre moyen d'accomplir cela?

1
Stefano

Tout d’abord, vous devez stocker la date de connexion réelle, car elle n’est pas stockée par défaut. Vous pouvez utiliser ce code pour le faire (utilisez-le dans votre 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 );
}

Après cela, vous pouvez utiliser le champ méta pour trier les résultats:

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

la réponse de passatgt peut être légèrement simplifiée. Pas besoin de saisir l'objet utilisateur, quand il est déjà présent comme deuxième argument:

add_action( 'wp_login','prefix_save_user_last_login', 0, 2 );
function prefix_save_user_last_login( $login, $user ) {  
    update_usermeta( $user->ID, 'user_last_login', time() );
}
4
GaryJ