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 );
效果图如下:
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);
}
}
测试发现这段代码导致了一些问题:登录次数是安装本文插件或添加代码后开始统计,登录时间莫名其妙是一个很大的数,也不知是从哪里的,暂时不深究了。
免责声明
0、网站资源均通过网络等合法渠道获取,该资料仅作为学习交流,其版权归出版社或者原作者所有,本网站不对所涉及的版权问题负责。网站售卖的价格绝对不是商品价格,而是整理资料的成本,如原作者认为侵权,请联系我们,我们立即删除文章,谢谢!
本站保证原原本本的完整性下载原始文件,并不保证资料的准确性,可靠性,对此产生的问题不做任何解释
1、博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。
2、网站资源均通过网络等合法渠道获取,该资料仅作为学习交流,其版权归出版社或者原作者所有,下载后请于24小时内删除,如有真实需要请支持正版!因下载本站任何资源造成的损失,全部责任由使用者本人承担!本网站不对所涉及的版权问题负责。网站售卖的价格绝对不是商品价格,而是整理资料的成本。
3、如果你是版权方,认为本文内容对您的权益有所侵犯,请联系博主,并参照 侵删联系 的说明提交相应的证明材料,待博主进行严格地审查和背景调查后,情况属实的将在三天内将本文删除或修正。
4、博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。
5、博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!
6、博主只是一名普通的互联网从业者,不懂修电脑,不会卖电脑,不会帮你盗号,不会破解开机密码,找不回你丢失的手机等,如有这样的想法请绕道!
7、另外还有部分家里有矿的用户就希望我帮他服务,对于这种有钱人变态的需求,我一般都不会拒绝的。
8、本站虚拟货币充值或数字资源购买后,均不可以任何理由退换!购买前(请慎重考虑)
9、附注:根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。
10、数字千年版权法案(DMCA)
琼鲸网网站接受受版权保护的内容DMCA侵权通知。
琼鲸网络 » WordPress后台显示用户最后登录时间和次数(前台显示登录/注册时间)
常见问题FAQ
- 免费下载或者SVIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 SVIP介绍。
- 充值&SVIP会员需知
- 提示下载完但解压或打开不了?
- 网站所有素材99%都是采用百度网盘、天翼云盘、蓝奏云网盘存储