Functions.php of your WordPress theme will capture a user’s last login date. Recently I updated the script to the most current version of WordPress. Things have been changed to wpsnipp_get_last_login() and wpsnipp_set_last_login() should be obvious what they do. One will update the last login data in the user meta and the other will let you get the last date so you can display it on your site. We also save the current date and also the previous date so you can choose what you display to admins vs subscribers.


   // set the last login date

   add_action('wp_login','wpsnipp_set_last_login', 0, 2);

   function wpsnipp_set_last_login($login, $user) {

       $user = get_user_by('login',$login);

       $time = current_time( 'timestamp' );

       $last_login = get_user_meta( $user->ID, '_last_login', 'true' );

       if(!$last_login){

       update_usermeta( $user->ID, '_last_login', $time );

       }else{

       update_usermeta( $user->ID, '_last_login_prev', $last_login );

       update_usermeta( $user->ID, '_last_login', $time );

       }

   }

   // get last login date

   function wpsnipp_get_last_login($user_id,$prev=null){

     $last_login = get_user_meta($user_id);

     $time = current_time( 'timestamp' );

     if(isset($last_login['_last_login_prev'][0]) && $prev){

             $last_login = get_user_meta($user_id, '_last_login_prev', 'true' );

     }else if(isset($last_login['_last_login'][0])){

             $last_login = get_user_meta($user_id, '_last_login', 'true' );

     }else{

       update_usermeta( $user_id, '_last_login', $time );

       $last_login = $last_login['_last_login'][0];

     }

     return $last_login;

   } 

You can then use the following to display the last login date.

You may also want to show the last login date to your users. I save that to user meta in the snippet above. wpsnipp_get_last_login($current_user->ID,true)) adding true will get the previous login date not the current.

    // show last login date

     global $current_user;

     get_currentuserinfo();

     echo '

Previous: Login date: ' . date("Y-m-d h:m:s", wpsnipp_get_last_login($current_user->ID,true)) . '

';    echo '

Current: Login date: ' . date("Y-m-d h:m:s", wpsnipp_get_last_login($current_user->ID)) . '

'; You can also compare the previous login date to the current date and get the days since the last login.    // how many days since last login    global $current_user;    get_currentuserinfo();    $now = time();    $last_login = wpsnipp_get_last_login($current_user->ID,true);    $datediff = $now - $last_login;    echo '

Days since last login: ' . floor($datediff/(60*60*24)) . '

';

Some functions in the old version below have been deprecated including get_userdatabylogin(). Please use the above snippet as it is the most current version using get_user_by().


     function your_last_login($login) {

       global $user_ID;

       $user = get_userdatabylogin($login);

       update_usermeta($user->ID, 'last_login', current_time('mysql'));

   }

   add_action('wp_login','your_last_login');

   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);

       echo $the_last_login;

   }

   < ?php

            global $userdata;

            get_currentuserinfo();

            echo  'You last logged in:';

            get_last_login($userdata->ID);

   ?>

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Welcome to Wbcom Designs!  - Get 10% off on all plugins & themes
Coupon : HELLO10