hoseyn sahebi 20 تیر 1395 بدون نظر 32 بازدید آموزش طراحی سایت

با افزودن اسنیپت زیر به فایل functions.php قالب وردپرسی خود، می‌توانید تاریخ و ساعت آخرین ورود کاربر را دریافت کنید. این اسکریپت اخیراً برای جدیدترین نسخه‌ی وردپرس به‌روز رسانی شده است. کاربرد دو تابع جدید wpsnipp_get_last_login() و wpsnipp_set_last_login() نیز واضح است. یکی داده‌های مربوط به آخرین ورود کاربر را به‌روز رسانی می‌کند و دیگری به شما اجازه می‌دهد تا این داده‌ها را دریافت کرده و در سایت خود به نمایش درآورید. علاوه بر این با استفاده از این توابع ما تاریخ فعلی و قبلی را هم ذخیره می‌کنیم تا شما هر تاریخی که دوست داشتید را به دیگر مدیران یا کاربران خود نمایش دهید.

// 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;
}

 

اکنون می‌توانید با استفاده از کد زیر آخرین تاریخ ورود کاربر را نمایش دهید. اگر خواستید می‌توانید تاریخ ورود قبل از آن را هم نشان دهید. ما این اطلاعات را از طریق کد اسنیپت بالا در متای کاربر ذخیره می‌کنیم. در تابع wpsnipp_get_last_login($current_user->ID,true)) با اضافه کردن عبارت true به جای تاریخ فعلی، تاریخ ورود قبلی برگردانده می‌شود.

(هر دو قطعه کد زیر از رده کنار گذاشته شده‌اند)

 // show last login date
  global $current_user;
  get_currentuserinfo();
  echo '<p>Previous: Login date: ' . date("Y-m-d h:m:s", wpsnipp_get_last_login($current_user->ID,true)) . '</p>';
  echo '<p>Current: Login date: ' . date("Y-m-d h:m:s", wpsnipp_get_last_login($current_user->ID)) . '</p>';

به علاوه می‌توانید تاریخ آخرین ورود کاربر را با تاریخ فعلی مقایسه کرده و تعداد روزهای میان این دو تاریخ را به دست آورید.

 // 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 '<p>Days since last login: ' . floor($datediff/(60*60*24)) . '</p>';

همان طور که در کد زیر مشخص است برخی از توابع مثل get_userdatabylogin() از نسخه‌ی قبلی کنار گذاشته شده‌اند. پیشنهاد می‌کنیم شما هم از توابع جدیدی که در ابتدای مطلب معرفی شد استفاده کنید تا با جدیدترین نسخه همراه باشید.

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

نظرات کاربران (0)