Programación

Cómo mostrar una columna con el último acceso en WordPress

Cuando tienes muchos usuarios en tu instalación de WordPress a veces es conveniente saber cuándo fue el último acceso de algunos de ellos.

Te vamos a mostrar qué líneas necesitas en tu fichero functions.php, y te daremos un pequeño truco para que, además, puedas hacer ordenar esta columna.

El resultado debería ser una cosa así:

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

José María

Ingeniero de formación, es un apasionado de pantallas, teclas, códigos, matemáticas y jeroglíficos varios; cuenta con un enfermizo síndrome obsesivo-compulsivo por el detalle y el trabajo bien hecho.