La clave para mostrar el último acceso de los usuarios
Radica en colocar algunas funciones en nuestro fichero personalizado favorito, esto es, el archiconocido archivo functions.php
La primera de ellas es esta, y la necesitamos para «empezar» a registrar cuándo accede alguien a nuestro sitio web; estamos hablando claramente del backend.
function comaporter_collect_login_timestamp( $user_login, $user ){
update_user_meta( $user->ID, 'last_login', time() );
}
add_action( 'wp_login', 'comaporter_collect_login_timestamp', 20, 2 );
La siguiente función que debemos añadir la necesitamos para indicarle a nuestro WordPress que vamos a añadir una columna nueva. Queda de la siguiente manera:
function comaporter_add_last_login_column( $columns ){
$columns['last_login'] = 'Último acceso'; // column ID / column Title
return $columns;
}
add_filter( 'manage_users_columns', 'comaporter_add_last_login_column' );
La última función necesaria es la que va a manejar toda la lógica para determinar el último acceso de los usuarios.
Añade a tu fichero estas líneas. Lo que hará será obtener la meta información necesaria para cada usuario, y aplicarla en la columna recién creada:
function comaporter_last_login_column( $output, $column_id, $user_id ){
if( $column_id == 'last_login' ){
$last_login = get_user_meta( $user_id, 'last_login', true );
$date_format = 'j F Y [H:i]';
$output = $last_login ? date( $date_format, $last_login ) : '-';
}
return $output;
}
add_filter( 'manage_users_custom_column', 'comaporter_last_login_column', 10, 3 );
Bonus: haz esta columna ordenable
Con este pequeño truco, podremos saber de forma más rápida (suponiendo, claro, que tenemos muchos usuarios) cuál es el acceso más reciente.
Nada más simple que añadir este código al mismo fichero functions.php:
function comaporter_sortable_columns( $columns ){
return wp_parse_args( array(
'last_login' => 'last_login',
), $columns );
}
add_filter( 'manage_users_sortable_columns', 'comaporter_sortable_columns' );
function comaporter_sort_last_login_column( $query ){
if( !is_admin() ) {
return $query;
}
$screen = get_current_screen();
if( isset( $screen->id ) && $screen->id !== 'users' ){
return $query;
}
if( isset( $_GET[ 'orderby' ] ) && $_GET[ 'orderby' ] == 'last_login' ){
$query->query_vars['meta_key'] = 'last_login';
$query->query_vars['orderby'] = 'meta_value';
}
return $query;
}
add_action( 'pre_get_users', 'comaporter_sort_last_login_column' );
¡Pruébalo y cuéntanos!
Más información: WPBeginners