Por Fernando el Feb 01, 2016 09:09 am Normalmente uno no necesita controlar cuántas veces acceden sus usuarios, pero en entornos editoriales, tiendas online y blogs corporativos todo seguimiento es poco, así que vamos a ver cómo conocer las estadísticas de acceso de los usuarios de un sitio WordPress, bastante fácil dicho sea de paso.  De hecho, solo tenemos que añadir unas líneas de código a nuestro plugin de utilidades, o sino también podemos crear un plugin solo para eso. Las líneas a incluir serían las siguientes: namespace Sitepoint\WordPressPlugin; class Login_Counter { public function init() { add_action( 'wp_login', array( $this, 'count_user_login' ), 10, 2 ); add_filter( 'manage_users_columns', array( $this, 'add_stats_columns' ) ); add_filter( 'manage_users_custom_column', array( $this, 'fill_stats_columns' ), 10, 3 ); } /** * Guarda los accesos de usuario en la base de datos. * * @param string $user_login username * @param object $user WP_User object */ public function count_user_login( $user_login, $user ) { $count = get_user_meta( $user->ID, 'sp_login_count', true ); if ( ! empty( $count ) ) { $login_count = get_user_meta( $user->ID, 'sp_login_count', true ); update_user_meta( $user->ID, 'sp_login_count', ( (int) $login_count + 1 ) ); } else { update_user_meta( $user->ID, 'sp_login_count', 1 ); } } /** * Añade la columna de estadísticas al listado de usuarios en WordPress * * @param string $columns * * @return mixed */ public function add_stats_columns( $columns ) { $columns['login_stat'] = __( 'Accesos' ); return $columns; } /** * Rellena la columna de estadísticas con los valores. * * @param string $empty * @param string $column_name * @param int $user_id * * @return string|void */ public function fill_stats_columns( $empty, $column_name, $user_id ) { if ( 'login_stat' == $column_name ) { if ( get_user_meta( $user_id, 'sp_login_count', true ) !== '' ) { $login_count = get_user_meta( $user_id, 'sp_login_count', true ); return "<strong>$login_count</strong>"; } else { return __( 'No record found.' ); } } return $empty; } /** * Singleton class instance * @return Login_Counter */ public static function get_instance() { static $instance; if ( ! isset( $instance ) ) { $instance = new self(); $instance->init(); } return $instance; } } Login_Counter::get_instance(); Por si quieres echarle un tiento a lo que hace cada parte … vayamos por partes: 1. Metemos los filtros y ganchos necesarios public function init() { add_action( 'wp_login', array( $this, 'count_user_login' ), 10, 2 ); add_filter( 'manage_users_columns', array( $this, 'add_stats_columns' ) ); add_filter( 'manage_users_custom_column', array( $this, 'fill_stats_columns' ), 10, 3 ); } 2. Creamos una tabla en la base de datos, donde guardamos los accesos de usuario public function count_user_login( $user_login, $user ) { if ( ! empty( get_user_meta( $user->ID, 'sp_login_count', true ) ) ) { $login_count = get_user_meta( $user->ID, 'sp_login_count', true ); update_user_meta( $user->ID, 'sp_login_count', ( (int) $login_count + 1 ) ); } else { update_user_meta( $user->ID, 'sp_login_count', 1 ); } } 3. Añadimos la columna que mostrará los accesos de cada usuario en el listado de usuarios de WordPress public function add_stats_columns( $columns ) { $columns['login_stat'] = __( 'Accesos' ); return $columns; } 4. Mostramos en la columna los accesos de cada usuario public function fill_stats_columns( $empty, $column_name, $user_id ) { if ( 'login_stat' == $column_name ) { if ( get_user_meta( $user_id, 'sp_login_count', true ) !== '' ) { $login_count = get_user_meta( $user_id, 'sp_login_count', true ); return "<strong>$login_count</strong>"; } else { return __( 'No record found.' ); } } return $empty; } 5. Cerramos y hacemos que todo funcione public static function get_instance() { static $instance; if ( ! isset( $instance ) ) { $instance = new self(); $instance->init(); } return $instance; } } Login_Counter::get_instance(); Si lo prefieres, como apuntaba antes, puedes crear un plugin con todo el código, sería algo así: <?php /* Plugin Name: Contador de accesos del usuario a WordPress Plugin URI: http://sitepoint.com Description: Cuenta el número de veces que los usuarios acceden a su cuenta WordPress. Version: 1.0 Author: Agbonghama Collins Author URI: http://w3guy.com License: GPL2 */ namespace Sitepoint\WordPressPlugin; class Login_Counter { public function init() { add_action( 'wp_login', array( $this, 'count_user_login' ), 10, 2 ); add_filter( 'manage_users_columns', array( $this, 'add_stats_columns' ) ); add_filter( 'manage_users_custom_column', array( $this, 'fill_stats_columns' ), 10, 3 ); } /** * Guarda los accesos de usuario en la base de datos. * * @param string $user_login username * @param object $user WP_User object */ public function count_user_login( $user_login, $user ) { $count = get_user_meta( $user->ID, 'sp_login_count', true ); if ( ! empty( $count ) ) { $login_count = get_user_meta( $user->ID, 'sp_login_count', true ); update_user_meta( $user->ID, 'sp_login_count', ( (int) $login_count + 1 ) ); } else { update_user_meta( $user->ID, 'sp_login_count', 1 ); } } /** * Añade la columna de estadísticas al listado de usuarios en WordPress * * @param string $columns * * @return mixed */ public function add_stats_columns( $columns ) { $columns['login_stat'] = __( 'Accesos' ); return $columns; } /** * Rellena la columna de estadísticas con los valores. * * @param string $empty * @param string $column_name * @param int $user_id * * @return string|void */ public function fill_stats_columns( $empty, $column_name, $user_id ) { if ( 'login_stat' == $column_name ) { if ( get_user_meta( $user_id, 'sp_login_count', true ) !== '' ) { $login_count = get_user_meta( $user_id, 'sp_login_count', true ); return "<strong>$login_count</strong>"; } else { return __( 'No record found.' ); } } return $empty; } /** * Singleton class instance * @return Login_Counter */ public static function get_instance() { static $instance; if ( ! isset( $instance ) ) { $instance = new self(); $instance->init(); } return $instance; } } Login_Counter::get_instance(); Lo guardas en una carpeta con el nombre que quieras (sin espacios por favor), lo comprimes en ZIP y lo instalas desde WordPress a la manera habitual: Plugins -> Añadir nuevo -> Subir plugin.  ¿Que prefieres tenerlo ya hecho? Puedes descargarlo en GitHub o de aquí mismo… Descargar “Contador de accesos de usuario a WordPress” contador-login-wordpress-1.zip – Descargado 13 veces – 24 kB Visto en SitePoint Verlo en el navegador » Artículos recientes:
|
No hay comentarios:
Publicar un comentario