¿Está buscando una forma de rastrear las vistas de las publicaciones sin un plugin utilizando metadatos de publicación? Si bien probablemente exista un plugin para esto, hemos creado un fragmento de código rápido que puede usar para rastrear las vistas de las publicaciones sin un plugin utilizando metadatos de publicación en WordPress.
Instrucciones:
Agrega este código al archivo functions.php de tu tema o a un plugin específico del sitio:
function getPostViews($postID){
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0 View";
}
return $count.' Views';
}
function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
}else{
$count++;
update_post_meta($postID, $count_key, $count);
}
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
Opcionalmente, agregue este código también a una columna en el administrador de WordPress que muestre las vistas de las publicaciones:
// Add to a column in WP-Admin
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
$defaults['post_views'] = __('Views');
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if($column_name === 'post_views'){
echo getPostViews(get_the_ID());
}
}
Esta parte del código de rastreo de vistas establecerá las vistas de las publicaciones. Simplemente coloque este código a continuación dentro del archivo single.php dentro del Bucle de WordPress.
<?php
setPostViews(get_the_ID());
?>
Nota sobre el almacenamiento en caché de fragmentos: Si está utilizando un plugin de almacenamiento en caché como W3 Total Cache, el método anterior para establecer vistas no funcionará, ya que la función setPostViews() nunca se ejecutaría. Sin embargo, W3 Total Cache tiene una función llamada almacenamiento en caché de fragmentos. En lugar de lo anterior, use lo siguiente para que setPostViews() se ejecute correctamente y rastree todas las vistas de sus publicaciones incluso cuando tenga el almacenamiento en caché habilitado.
<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->
El código a continuación es opcional. Use este código si desea mostrar el número de vistas dentro de sus publicaciones. Coloque este código dentro del Bucle.
<?php
echo getPostViews(get_the_ID());
?>
Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo copiar / pegar fragmentos de código correctamente en WordPress, para que no rompas accidentalmente tu sitio.
Si te gustó este fragmento de código, considera revisar nuestros otros artículos en el sitio como: Los 10 mejores plugins de testimonios para WordPress y cómo configurar el seguimiento de autores en WordPress con Google Analytics.
Hola, ¿buscas una consulta para eliminar publicaciones sin vistas? ¿Alguna idea? ¡Gracias! 🙂
Kevin, gracias por este buen fragmento de código.
¿Cómo funcionará esto para un sitio con un volumen de tráfico muy grande? Estaba investigando un plugin de vistas de publicaciones que es muy popular (no recuerdo el nombre ahora), y esa fue una preocupación mencionada en los comentarios.
Funciona bien con las nuevas versiones de WP. Asegúrate de tener las cosas configuradas correctamente.
Hola, ¿hay alguna forma de restablecer el contador a cero vistas?
Hola Cyndy, todo se guarda como metadatos, así que puedes ir a la publicación y cambiar el valor de lo que sea a cero.
Kevin, gracias
¡¡tu tutorial muy útil!!
Hola Cyndy, hola Kevin.
Código genial.
No encuentro el lugar exacto donde se almacena esta metadato para cada publicación para cambiarlo.
Dentro de la publicación (Desde Panel de control->Publicación->Editar) solo está el contenido de la publicación, no hay metadatos.
Gracias.
¡Hola Kevin!
He estado usando tu fragmento de código por un tiempo y estoy feliz, pero en las últimas semanas algo sucedió y dejó de contar todas las vistas. Sé esto porque veo 500 vistas de Google Analytics, ¡pero el fragmento solo muestra 18 vistas? Estoy usando el código exacto que presentaste aquí, sin modificaciones. Solo cambié un conteo el mes pasado y desde entonces todo dejó de funcionar.
Normalmente, esto se debe a que has instalado un nuevo plugin o algo similar. He probado este fragmento de código en nuevas versiones de WordPress y debería funcionar bien. ¿Tienes algún plugin de caché ejecutándose en tu sitio, como w3 total cache?
Tengo w3 instalado. ¿Cómo afecta esto al fragmento? Funcionó hasta ahora con él al lado, ¿por qué está causando problemas ahora? He limpiado la caché muchas veces y todavía nada. ¡¡Ughhh!!
porque no estaría llamando a la función setPost ya que las cosas están en caché, envíame un correo electrónico usando el formulario de contacto y te enviaré una versión actualizada que resolverá el problema.
¿puedes compartir aquí?
¿Hay alguna forma de que el recuento de vistas se restablezca todos los días para mostrar solo el número de vistas del día actual?
Hola Pere,
Sí, absolutamente, pero tendrías que cambiar una cantidad considerable de código para lograr esto. Desafortunadamente, no es solo un cambio simple.
Esto es exactamente lo que estoy buscando. ¿Hay algún lugar donde pueda obtener esta información?
Necesito implementar una página de sección de tendencias para un cliente mío y estoy un poco atascado con esto en este momento. Parece que no puedo encontrar ninguna información al respecto en la web.
¡Cualquier ayuda sería muy apreciada!
Hola Pere, ¿descubriste algo al respecto?
¿Hay alguna forma de que esto solo registre vistas únicas? Presionar F5 en mi teclado está aumentando los números.
Hola Mark,
Sí, pero no fácilmente con este fragmento. Podrías hacer algunas verificaciones de cookies, o rastrear direcciones IP para vistas únicas mejores pero no perfectas. O incluso requerir que los usuarios inicien sesión y rastrear por usuario.
$count = 0; en setPostViews() en la línea #15 debería eliminarse, en realidad no hace nada 😉
Sin duda, el fragmento más rápido de implementar
Lo estoy usando para varios métodos de notificación de frontend, ¡gran trabajo!
¡Eres genial!
gracias por este tutorial
¿Dónde se almacena el recuento? ¿Está en una base de datos?
Quería saber si es posible cambiar los valores.
Me funciona bien en la última versión de WordPress, gracias.
a mí me está contando dos veces...
Hola Andrew, es probable que sea prefetching, o que setViews se agregue más de una vez. Para resolver el problema, intenta agregar esto. Nota el código anterior.
// Eliminar problemas con la pre-carga que agrega vistas adicionales
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
Hola, esto parece dejar de funcionar en WP 4.0. ¿Alguien puede confirmar o proporcionar una solución? ¡Gracias!
¿Has oído algo sobre esto? Acabo de actualizar a la 4.0 y me gustaría usar esto.
Yo también.
Estoy usando la 4.0 y nada malo 🙂
Wow. Esto me ahorró tiempo. Muy buen tipo, gracias.
Gran fragmento, pero sigue incrementando en cada publicación.
¡Hola!
Disculpa mi mal inglés, estoy usando un traductor. Soy de Brasil.
Tengo un sitio que ya tiene varias visitas en las publicaciones, ¿cómo no pierdo estas visitas? ¿Es para actualizar la base de datos? Uso este plugin: WP-PostViews
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.
Hola Randy, puedes hacer lo siguiente agregando un div alrededor de la función php. Agregué un ejemplo en pastebin
http://pastebin.com/ThLasSJB
Lo intenté ahora mismo y no funciona.
Lo intenté ahora mismo y no funciona.
Lo intenté ahora mismo y no funciona.
Lo intenté ahora mismo y no funciona.
Lo intenté ahora mismo y no funciona.
Lo intenté ahora mismo y no funciona.
Hola Randy,
¿el fragmento está mostrando el número de visitas? si es así, tiene algo que ver con tu CSS o HTML, ya que copiar ese fragmento y colocarlo dentro de tu bucle de publicación única debería funcionar bien. Solo tienes que definir algunos estilos para aplicar.
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.
¿Me podrías ayudar a estilizar la salida del echo? Quiero poner el contador de visitas en mi loop y lo logré perfectamente, pero ¿cómo le agrego CSS a la salida para el texto? ¿Alguna idea sobre eso? Gracias.