Analizando la web de un cliente para mejorar la carga de la web, descubrimos que el plugin «WP-PostViews» realizaba peticiones ajax a través de «admin-ajax.php» cada vez que cargaba una página.
El plugin lo utilizaba para saber cuál es la página más vista, pero no tiene sentido que lo haga sobre páginas como la Home, contacto, etc. Lo normal es hacerlo sobre los artículos del blog, por ejemplo, para saber cuál es artículo más visto y mostrarlo en un listado de los 5 más top.
Además, no es recomendable hacer peticiones a «admin-ajax.php» en la carga de la página porque las peticiones son lentas ,y consume bastantes recursos del servidor. Comprobamos que la petición consumía entre 3.000 ms y 5.000 ms ,según el caso.

Estuvimos mirando alternativas como el plugin «Post Views Counter», o «Simple Post Views Count», pero necesitábamos algo sencillo. Con hacer lo mismo que hacía el plugin del cliente, pero solo en los artículos, y por API REST en lugar de «admin-ajax.php», teníamos suficiente.
Decidimos desarrollar un plugin a medida para WordPress y subirlo al repositorio WordPress, y conseguimos varios objetivos:
- Solucionar el problema del cliente.
- Aportar nuestro granito de arena a la comunidad de WordPress.
- Que otras personas pudieran utilizar y hacer sus páginas web más rápidas.
Optimizar peticiones AJAX por admin-ajax.php
Más que optimizar la petición, lo que hicimos fue quitarla y crear un Endpoint especifico para esa función. También decidimos retrasar la petición 8 segundos después de que cargara la página para que no afectara a la velocidad de carga, de forma que si una persona no se mantiene en la página ese tiempo mejor no contarla.


La petición únicamente se realiza en las entradas/post, y lo único que hace es sumar «uno» al contador de visitas de esa página. Con este cambio hemos reducido el tiempo a la mitad más o menos, y lo mejor de todo es que solo se ejecuta dónde lo necesitamos.
El valor lo guardamos en el post meta llamado «views».
Código para mostrar los 5 artículos más vistos en el último mes.
Ahora vamos a ver un ejemplo del código que tendríamos que poner para mostrar los cinco post más vistos en el último mes.
$mes_actual = date( 'Y-m-d', strtotime('0 month') ) . ' 00:00:00';
$mes_anterior = date( 'Y-m-d', strtotime('-1 month') ) . ' 00:00:00';
$sql = '
SELECT DISTINCT p.ID, p.post_date, p.post_name, p.post_title, (meta_value+0) AS views
FROM ' . $wpdb->prefix . 'posts p, ' . $wpdb->prefix . 'postmeta pm
WHERE pm.post_id = p.ID
AND post_date < %s
AND post_date > %s
AND post_type = "post"
AND post_status = "publish"
AND meta_key = "views"
ORDER BY views DESC LIMIT 5
';
$most_viewed = $wpdb->get_results( $wpdb->prepare( $sql, $mes_actual, $mes_anterior ) );
$wpdb->flush();
if ( !empty( $most_viewed ) ) {
foreach ( $most_viewed as $item ) {
// Código mostrar la información del artículo.
$post_id = $item->ID;
$views = get_post_meta( $post_id, 'views', true );
echo '<p>'. $item->post_title .' -> '. $views .'</p>';
// ...
}
}Destaca tus artículos populares con nuestro eficiente plugin
Descubre la solución perfecta para resaltar tus artículos más vistos en un periodo de tiempo específico sin sacrificar la velocidad de carga en WordPress. Con nuestro plugin y un simple código, podrás mostrar fácilmente los contenidos más populares sin afectar el rendimiento de tu sitio.
Este recurso es ideal para aquellos que desean destacar el contenido más relevante sin comprometer la experiencia del usuario. Olvídate de complicadas configuraciones y disfruta de la eficiencia de nuestro plugin, diseñado para integrarse sin problemas y ofrecer resultados notables.
¡Descarga ahora mismo desde WordPress.org y potencia la visibilidad de tus artículos populares de manera rápida y eficaz! Optimiza tu sitio web sin complicaciones y ofrece a tus visitantes una experiencia de navegación aún más atractiva.
Conclusión
Hemos intentado que el plugin «Bubuku post view count» sea lo más sencillo posible para poderlo integrar fácilmente en los desarrollos. De todas formas, si vemos que la comunidad demanda que se pueda utilizar para otro tipo de «post», como los productos de WooCommerce, o un bloque de Gutenberg, para poder definir el número de noticias, tiempo, con imagen, etc. lo añadiríamos en próximas versiones.
Esperamos que estés disfrutando de nuestro plugin. Si has encontrado útil esta herramienta, ¿considerarías dejar una reseña en WordPress.org? Tu opinión es invaluable y nos ayuda a mejorar continuamente. Si tienes alguna pregunta o comentario, no dudes en hacérnoslo saber aquí mismo. ¡Gracias por tu apoyo!


