WordPress后台显示用户最后登录时间和次数(前台显示登录/注册时间)
分享一串WordPress的功能代码,让你的WordPress支持前台或者后台显示用户最后的登录时间,让你清楚的知道用户何时登陆过,最后登录是什么时候。
有这么一个功能之后,我们就可以清楚的知道哪些用户是活跃用户,那些事死用户,可以清理或者是处理相关问题!
接下来就让无作为来分享一下:WordPress前台显示用户最后登录时间和WordPress后台显示用户最后登录时间的方法吧!
WordPress后台显示用户最后登录时间
实现这个功能一共有两个办法,一个是插件版,一个是代码版,如果代码版有bug大家可以使用插件版,不过还是少用插件,我们先分享一下代码版的方法吧。
将下面的代码添加到当前主题的 functions.php 即可:
/** * WordPress 后台用户列表添加上次登录时间 * https://www.sucaihu.com */ // 创建一个新字段存储用户登录时间 function insert_last_login( $login ) { global $user_id; $user = get_userdatabylogin( $login ); update_user_meta( $user->ID, 'last_login', current_time( 'mysql' ) ); } add_action( 'wp_login', 'insert_last_login' ); // 添加一个新栏目“上次登录” function add_last_login_column( $columns ) { $columns['last_login'] = '上次登录'; return $columns; } add_filter( 'manage_users_columns', 'add_last_login_column' ); // 显示登录时间到新增栏目 function add_last_login_column_value( $value, $column_name, $user_id ) { $user = get_userdata( $user_id ); if ( 'last_login' == $column_name && $user->last_login ) $value = get_user_meta( $user->ID, 'last_login', ture ); else $value = '从未登录'; return $value; } add_action( 'manage_users_custom_column', 'add_last_login_column_value', 10, 3 );
效果图如下:
插件版:WP Last Login,大家直接点击即可下载。
WordPress前台显示用户最后登录时间
有时候我们在前台也需要显示,那么这里也提供代码给大家,让大家实现WordPress前台显示用户登录时间:
可以将下面的代码添加到当前主题functions.php
中:
// 记录登录时间 function user_last_login($user_login) { global $user_ID; // 纠正8小时时差 date_default_timezone_set(PRC); $user = get_user_by( 'login', $user_login ); update_user_meta($user->ID, 'last_login', date('Y-m-d H:i:s')); } add_action('wp_login','user_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(); get_last_login($userdata->ID); ?>
到此我们打开首页就可以看到效果了。
WordPress前台显示用户注册时间
这里原理相同,也分享一段代码实现WordPress前台显示用户注册的时间功能,
将代码添加到当前主题functions.php中:
function user_registered_date(){ $userinfo=get_userdata(get_current_user_id()); $authorID= $userinfo->id; $user = get_userdata( $authorID ); $registered = $user->user_registered; echo '注册时间' . date( 'Y年m月d日', strtotime( $registered ) ); }
然后是调用代码:
<?php if ( is_user_logged_in() ) { user_registered_date();} ?>
这段代码只有登录用户可见。
到此,代码就结束了,效果到底怎么样,大家自己调用之后打开网址首页就可以看见了哦。
WordPress 后台用户列表显示用户登录次数和时间
这里还有一份更加完善的代码集合,其功能是:WordPress 后台用户列表显示用户登录次数和时间,把上面的功能集合了,添加了一个登陆次数的显示!
将下面代码添加到function.php下即可:
/** * WordPress 后台用户列表显示用户登录次数和时间 * https://www.sucaihu.com */ add_action('wp_login','freeman_your_last_login_time'); function freeman_your_last_login_time($login) { global $user_ID; $user = get_user_by('login', $login); $time_start = time(); update_user_meta($user->ID, 'start_time', $time_start); } add_action('wp_logout', 'freeman_get_time_on_logout'); function freeman_get_time_on_logout($user_id) { global $user_ID; $user = get_user_by('id', $user_ID); $time_end = time(); $time_start = get_user_meta($user->ID, 'start_time', true); $total_time = (intval($time_end) - intval($time_start)); $total_time = round($total_time/60); $total_all_time = get_user_meta($user->ID, 'total_time', true); $total_time = $total_all_time + $total_time; update_user_meta($user->ID, 'total_time', $total_time); $logged_in_amount = get_user_meta($user->ID, 'logged_in_amount', true); $logged_in_amount = $logged_in_amount + 1; update_user_meta($user->ID, 'logged_in_amount', $logged_in_amount); $average_time = ($total_time/$logged_in_amount); update_user_meta($user->ID, 'average_time', $average_time); } add_filter('manage_users_columns', 'freeman_add_user_minutes_column'); function freeman_add_user_minutes_column($columns) { $columns['total_time'] = 'Total Minutes'; $columns['logged_in_amount'] = '# of Logins'; $columns['average_time'] = 'Ave. Min./Login'; return $columns; } add_action('manage_users_custom_column', 'freeman_show_user_minutes_column_content', 10, 3); function freeman_show_user_minutes_column_content($value, $column_name, $user_id) { $output = " "; $user = get_userdata( $user_id ); if ( 'total_time' == $column_name ) $output .= ($user->total_time); if ( 'logged_in_amount' == $column_name ) $output .= ($user->logged_in_amount); if ( 'average_time' == $column_name ) $output .= ($user->average_time); return $output; } add_action('admin_footer', 'freeman_custom_user_buttons'); function freeman_custom_user_buttons() { $screen = get_current_screen(); if ( $screen->id != "users" ) // Only add to users.php page return; echo " <script type="text/javascript"> jQuery(document).ready(function($) { $('<option>').val('del_user_meta').text('Delete User Logs').appendTo("select[name='action']"); $('<option>').val('export_user_meta').text('Export User Logs').appendTo("select[name='action']"); }); </script> "; } add_action('load-users.php', 'freeman_delete_users_info'); function freeman_delete_users_info() { if(isset($_GET['action']) && $_GET['action'] === 'del_user_meta') { // Check if our custom action was selected $del_users = $_GET['users']; // Get array of user id's which were selected for meta deletion if ($del_users) { // If any users were selected foreach ($del_users as $del_user) { delete_user_meta($del_user, 'logged_in_amount'); delete_user_meta($del_user, 'total_time'); delete_user_meta($del_user, 'average_time'); } } } } add_action('load-users.php', 'freeman_export_users_info'); function freeman_export_users_info() { if(isset($_GET['action']) && $_GET['action'] === 'export_user_meta') { $del_users = $_GET['users']; if ($del_users) { $fp = fopen('file.csv', 'w'); $User_Name_Row = array("USERNAME", "Total Minutes", "# of Logins", "Ave. Min./Login"); fputcsv($fp, $User_Name_Row); foreach ($del_users as $del_user) { $user_info = get_userdata($del_user); $user_name = ($user_info->user_login); $logged_in_amount = get_user_meta($del_user, 'logged_in_amount', true); $total_time = get_user_meta($del_user, 'total_time', true); $average_time = get_user_meta($del_user, 'average_time', true); $list = array ( array ($user_name, $total_time, $logged_in_amount, $average_time) ); foreach ($list as $fields) { fputcsv($fp, $fields); } } } fclose($fp); $file="file.csv"; //file location header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($file).'"'); header('Content-Length: ' . filesize($file)); readfile($file); } }
测试发现这段代码导致了一些问题:登录次数是安装本文插件或添加代码后开始统计,登录时间莫名其妙是一个很大的数,也不知是从哪里的,暂时不深究了。
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » WordPress后台显示用户最后登录时间和次数(前台显示登录/注册时间)
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 织梦模板使用说明
- 你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html