Tutorial: Contador de visualizaciones de publicaciones en WordPress

Juank8805 Seguir

Curioso
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
3 Dic 2022
Mensajes
4
Seguramente como me pasó a mi has tenido la necesidad de mostrar un listado de los posts más vistos o más populares de tu sitio.
Es muy útil mostrar la información más relevante o que más tráfico tienen. Despues de todo si son las entradas que más visitan, ¿será por algo no?

Es muy probable que existan no pocos plugin para añadir esta funcionalidad que no viene por defecto en WP ¿Pero pq afectar el rendimiento de tu web instalando un complemento que es tan sencillo de implementar en las function? Les muestro como lograrlo.

***Es de buenas prácticas no tocar los archivos originales de tu theme, por lo que recomiendo siempre crear un Child Theme para añadir las nuevas funcionalidades o cambios de estilo***

En el archivo function.php de tu Child Theme añade estas dos funciones:

<?php

// Función para contar visualizaciones de un post.
function set_post_views() {
if ( is_single() ) {
$post_ID = get_the_ID();
$count = get_post_meta( $post_ID, 'post_views', true );

if ( $count == '' ) {
delete_post_meta( $post_ID, 'post_views' );
add_post_meta( $post_ID, 'post_views', 1 );
} else {
update_post_meta( $post_ID, 'post_views', ++$count );
}
}
}
add_action( 'wp', 'set_post_views' );

// Función para obtener el número de visualizaciones de un post
function get_post_views( $post_ID ){
$count = get_post_meta($post_ID, 'post_views', true);

if ( $count == '' ){
delete_post_meta($post_ID, 'post_views');
add_post_meta($post_ID, 'post_views', 0);
return 0;
}

return $count;
}


La primera función set_post_views() la utilizaremos para ir contando las visitas a nuestros posts. La manera de hacerlo es agregando esta función al hook wp. En este punto podemos preguntar si estamos en un single o detalle de un post. En este caso obtenemos el ID y consultamos las visualizaciones que tiene nuestro post a través de un custom field que hemos llamado «post_views«.


La segunda función get_post_views() la utilizaremos para mostrar el número de visualizaciones de nuestro post. Como tenemos el control absoluto, podríamos llamar a este dato y poner el número de visualizaciones en un texto tipo: Este post ha sido visto N veces.


Por ejemplo, en el loop del single.php podríamos hacer algo asi:

<?php

/* Start the Loop */
while ( have_posts() ) : the_post();
$post_views = get_post_views(get_the_ID());?>

<p>Este post ha sido visto <?php echo sprintf( _n( '%s vez', '%s veces', $post_views, 'your_textdomain' ), $post_views );?></p>

<?php
endwhile;
/* End of the loop.*/



Ahora si queremos mostrar un listado de los posts más vistos o populares por ejemplo en el sidebar de nuestro sitio, podemos hacer una consulta como esta:


<?php

$args = array(
'posts_per_page' => 4,
'meta_key' => 'post_views',
'orderby' => 'meta_value_num',
'order' => 'DESC'
);

$popular_posts = new WP_Query( $args );
while ( $popular_posts->have_posts() ) : $popular_posts->the_post();?>

<h2><?php the_title();?></h2>
<?php the_excerpt();

endwhile;


Esto te devolverá los 4 posts con mayor número de visualizaciones. La maquetación ya lo dejo a tu imaginación...
 

Coderz

1
Kappa
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Desde
30 Ene 2019
Mensajes
2.666
Gracias por el aporte.
 
Arriba