各ユーザーの最後のログインを取得して管理者パネルに表示しようとしています。現在、管理ループ内の最初のユーザーを表示できますが、残りのユーザーを引き出すことはできません。
各ユーザーmeta_valueをlast_loginと同じ位置にループさせて取り出す必要があると思いますが、標準の照会を試みましたが機能しません。コードは:
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_last_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;
}
ありがとう
これにより、Users管理者に新しい列が追加され、最後のログインが表示されます。
<?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;
}