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?
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);
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() );
}