web-dev-qa-db-fra.com

Suivi de la dernière connexion et de la dernière visite

J'utilise le code ci-dessous pour savoir quand un utilisateur se connecte pour la dernière fois. Je réalise cependant que s'il vérifie l'option Remember Me, cela ne suivra pas sa dernière visite .

// Catch the time they login and save it
function set_last_login($login) {
  $user = get_userdatabylogin($login);
  update_usermeta( $user->ID, 'last_login', current_time('mysql') );
}
add_action('wp_login', 'set_last_login');

// Function to display the time
function get_last_login($user_id) {
  $last_login = get_user_meta($user_id, 'last_login', true);
  $date_format = get_option('date_format') . ' ' . get_option('time_format');
  $the_last_login = mysql2date($date_format, $last_login, false);
  return $the_last_login;
}

En plus du code de travail ci-dessus pour le suivi des connexions, je cherche à savoir quand l'utilisateur a été actif pour la dernière fois s'il est déjà connecté .

Des conseils?

2
Pat

Vous pouvez créer une nouvelle entrée pour les métadonnées de l'utilisateur et la mettre à jour à chaque chargement d'administrateur.

Mettez ce qui suit dans le functions.php de votre thème ou peut-être envelopper dans un plugin:

function update_last_action_time() {
    $user = wp_get_current_user();
    update_user_meta($user->ID, 'last_action_time', current_time('mysql'));
}
add_action('admin_init', 'update_last_action_time');

Bien sûr, vous pouvez affiner ceci (et ainsi réduire les frais généraux) en le limitant à certaines pages, par exemple, uniquement au tableau de bord.

// Edit : vous devez utiliser update_user_meta à la place du code obsolète update_usermeta .

// Edit , à nouveau

Si vous souhaitez suivre les utilisateurs sur le front-end, placez ce code dans le modèle souhaité:

if (is_user_logged_in()) {
    $user = wp_get_current_user();
    update_user_meta($user->ID, 'last_action_time', current_time('mysql'));
}

Encore une fois, pour réduire les frais généraux, je préférerais mettre ceci et non dans le fichier footer.php. Je préfère prendre home.php (si vous en avez un) ou vérifier des demandes particulières (par exemple, votre page d'accueil , ce qui signifie: home_url() == 'http://'.$_SERVER['SERVER_NAME']). Mais comme dit précédemment (signification: en dessous;)), la surcharge est, bien sûr, ok quand on l'utilise néanmoins dans footer.php.

2
tfrommen