Contabilizar las visitas a un post en WordPress es útil para obtener información sobre la interacción de los usuarios con el contenido.
Este artículo te enseña cómo crear una función para incrementar el contador de visitas de un post y cómo implementarlo en tu sitio.
La función tms_increase_visit_counter() tiene como objetivo incrementar el contador de visitas de un post cada vez que un usuario accede a él.
Esta función guarda el número de visitas en los metadatos del post, permitiéndote realizar un seguimiento de la popularidad de cada artículo.
El contador solo se incrementará para los usuarios no registrados o los que no tengan roles específicos excluidos, como administradores o editores.
Índice del artículo
Desglose del Código
Incrementar el Contador de Visitas
Obtención del Contador de Visitas: La función utiliza get_post_meta() para obtener el valor actual del contador de visitas de un post. Si no existe, se inicializa el contador con el valor 1.
$key = 'tms_post_views_count';
$count = get_post_meta( $postID, $key, true );
Condición para Crear o Actualizar el Contador: Si el contador no está definido ($count == ''), elimina cualquier valor anterior y agrega uno nuevo con el valor 1. Si el contador ya existe, lo actualiza incrementando el valor en 1.
if ( $count == '' ) :
delete_post_meta( $postID, $key );
add_post_meta( $postID, $key, '1' );
else :
update_post_meta( $postID, $key, $count + 1 );
endif;
Implementación en la Acción wp_head
Verificación de Página Única: La acción se ejecuta solo en páginas de post único (is_single()), evitando que se registre la visita en otras partes del sitio.
if ( ! is_single() ) return;
Condición de Usuario No Registrado: Si el usuario no está registrado, se incrementa el contador para la visita.
if ( ! is_user_logged_in() ) :
tms_increase_visit_counter( $postID );
return;
Exclusión de Roles Específicos: Si el usuario tiene un rol de administrador, editor o roles similares (como contributor o shop_manager), no se incrementa el contador de visitas.
$user = wp_get_current_user();
$excluded_roles = ['administrator', 'editor', 'contributor', 'shop_manager', 'translator'];
if ( array_intersect( $excluded_roles, $user->roles ) ) return;
Incremento del Contador para Otros Usuarios: Si el usuario no tiene un rol excluido, se llama a la función tms_increase_visit_counter() para incrementar el contador.
tms_increase_visit_counter( $postID );
Código Completo
function tms_increase_visit_counter( $postID ) {
$key = 'tms_post_views_count';
$count = get_post_meta( $postID, $key, true );
if ( $count == '' ) :
delete_post_meta( $postID, $key );
add_post_meta( $postID, $key, '1' );
else :
update_post_meta( $postID, $key, $count + 1 );
endif;
}
add_action( 'wp_head', function() {
if ( ! is_single() ) return;
if ( empty( get_post() ) ) return;
$postID = get_the_ID();
if ( ! is_user_logged_in() ) :
tms_increase_visit_counter( $postID );
return;
endif;
$user = wp_get_current_user();
$excluded_roles = ['administrator', 'editor', 'contributor', 'shop_manager', 'translator'];
if ( array_intersect( $excluded_roles, $user->roles ) ) return;
tms_increase_visit_counter( $postID );
} );
Con este código, puedes llevar un seguimiento sencillo de las visitas a tus publicaciones y excluir ciertos roles según sea necesario.
