尝试获取每个用户的最后一次登录并将其显示在管理面板中。目前,我可以在管理循环中显示第一个用户,但是我无法拉出其余的用户。
我想我需要循环并提取每个用户meta\\u值,其中meta\\u值等于最后一次登录,但我尝试了一个标准查询,但它不起作用。代码为:
function modify_user_column( $column_name, $user_id ) {
//get current user object
$current_user = wp_get_current_user();
if( \'last_login\' != $column_name ) {
return get_last_login( $current_user->ID );
}
}
add_action( \'manage_users_custom_column\', \'modify_user_column\', 10, 2 );
get\\u last\\u login()是:
function get_last_login($user_id) {
$last_login = get_user_meta($user_id, \'last_login\', false);
$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;
}
谢谢
最合适的回答,由SO网友:D-B 整理而成
这将向用户管理员添加一个新列,并显示其上次登录。
<?php
/* Plugin Name: (#158276) WPSE | Last user login */
// Add user meta `last_login` that saves the UNIX time stamp
// to identify the exact time when a user logged in
add_action( \'wp_login\', \'add_login_time\' );
function add_login_time( $user_login ) {
global $wpdb;
$user_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_login = %s", $user_login ) );
update_user_meta( $user_id, \'last_login\', current_time(\'mysql\') );
}
// Add a new column to an admin list table
add_filter( \'manage_users_columns\', \'add_last_login_column\' );
function add_last_login_column( $columns ) {
$columns[\'last_login\'] = __( \'Last login\', \'last_login\' );
return $columns;
}
// Contents of the new admin list table column
add_action( \'manage_users_custom_column\', \'add_last_login_column_value\', 10, 3 );
function add_last_login_column_value( $value, $column_name, $user_id ) {
$meta = get_user_meta( $user_id, \'last_login\', true );
if ( \'last_login\' == $column_name && $meta ) {
return date_i18n(
sprintf(
\'%s - %s\',
get_option( \'date_format\' ),
get_option( \'time_format\' )
),
strtotime( $meta ),
get_option( \'gmt_offset\' )
);
}
return $value;
}