¿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:
Agregue este código al archivo functions.php de su 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 y pegar fragmentos de código correctamente en WordPress, para no dañar accidentalmente tu sitio.
Si le gustó este fragmento de código, considere revisar nuestros otros artículos en el sitio como: 10 mejores plugins de testimonios de WordPress y cómo configurar el seguimiento de autores en WordPress con Google Analytics.
Hola,
¿Puedo hacer como un conteo de vistas falsas + un conteo real?
Significa que puedo establecer un valor inicial manualmente (porque quiero que mi nueva publicación publicada muestre un valor como 3,429 vistas en el primer minuto) para que mi publicación parezca tener una gran cantidad de vistas, por supuesto, combinado con el conteo real también.
Si es así, ¿dónde se establece el conteo de vistas falso basándose en el código?
¿Cuál sería la clave meta para llamarla en una consulta?
‘post_views_count’ es la clave meta.
Hola, ¿es posible hacer que el número de vistas se muestre solo si es superior a 1000?
Podrías usar este código al mostrar el conteo de comentarios:
if (getPostViews(get_the_ID()) >= 1000) { echo getPostViews(get_the_ID()); }¿Hay alguna forma de excluir las vistas de administrador del conteo?
Es posible que desees usar algo como este código para contar vistas condicionalmente: https://www.isitwp.com/check-if-user-is-logged-in/
Hola Debjit Saha, no puedo encontrar la carpeta single.php en mi plantilla, ¿dónde debería pegar el código?
El bucle principal para las publicaciones individuales puede estar en otro archivo de plantilla. Es posible que desees buscar un archivo post.php o uno con un nombre similar.
Gracias por este código. Funcionó perfectamente.
Bonito fragmento.
¿Cómo puedo restablecer los contadores y empezar a contar de nuevo?
Si conoces el ID de las publicaciones que deseas, esto debería funcionar.
UPDATE yourDatabaseName.wp_postmeta
set meta_value = 0
where meta_key = ‘post_views_count’ and post_id = 1934
Hola, muy buena tu publicación.
Mi pregunta es, ¿cómo traer los datos de Google Analytics para mostrar el número de vistas de las Publicaciones y Páginas?
¿Tienes una publicación o un enlace sobre cómo implementar esto?
Lamentablemente, no tenemos una recomendación actual para esto exactamente. Dicho esto, es posible que desees consultar: https://www.monsterinsights.com/how-to-check-stats-for-individual-wordpress-posts-and-pages/
¿Algún plugin de Google Analytics que pueda extraer datos de vistas y mostrarlos en WordPress?
Hay muchos… Puedes consultar nuestra lista completa de los mejores plugins de Google Analytics.
Los códigos no me funcionan. Tengo un tema de bbpress, lo que significa que el tipo de publicación es “tema”. Pero cuando revisé, la meta_key se genera en el backend. Pero los valores meta no se actualizan en cada visita.
Grandes artículos, funciona bien en mi página.
Mi pregunta es, ¿el conteo comenzará solo después de implementar ese código?
porque todas mis páginas antiguas muestran 0 o 1 vista, cuando en realidad ya tienen miles de vistas.
Sí, el conteo no comienza hasta que el plugin está activo. Las vistas anteriores a esto no fueron registradas por este plugin.
¡Muchas gracias, funciona genial!
He 'mejorado' ligeramente la función get_post_views para que devuelva el texto adecuado según el número de vistas. Aquí está mi versión:
function get_post_views($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 Views”; } if ($count==’1′) { return “1 View”; } return $count.’ Views’; }
Quizás te gustaría adoptar esta versión.
¡Gracias por compartir! 🙂
gracias.
Esto me ha ayudado mucho, ¡muchas gracias!
¡Genial! Funciona a la perfección… Solo quería verlo en el área de administración y solo los dos primeros códigos hacen el truco.
Hola,
Gracias por el código, funciona a la perfección sin caché habilitado…
Pero, ¿cómo puedo hacer que funcione con wp rocket?
Por favor…
¿Alguien sabe cómo formatear o truncar los números? ¿Así que en lugar de 4445 vistas, sea 4,445 o 4.5K?
Es posible que desees usar funciones de PHP como round() y number_format() para este caso de uso.
Hola, de alguna manera mi código funciona bien pero incrementa +2 cada vez, las vistas van 0, 2, 4, 6. Lo cual ha sido molesto, por favor ayúdenme. Coloqué el código y la parte de mostrar vistas de publicaciones, ambas en una función que tiene una acción después del contenido. El contador funciona, solo que está en múltiplos de 2.
Es posible que desees verificar que esta función, setPostViews(get_the_ID()), solo se agregue una vez. ¿Qué hook estás usando?
¿funcionará el en lightspeed cache?
Código que aparece en la página de inicio
Ups, lo siento, por favor ignora mi comentario anterior. Me di cuenta de que estaba llamando a la función setPostViews varias veces. Mi error…
Después de arreglar esto, solo veo que el contador de vistas aumenta en +2 cada vez que actualizo la publicación individual del blog.
¿Alguien tiene una solución para esto? No me imagino que esto sea un gran problema considerando que la mayoría de los usuarios no actualizarán la página, aunque sería bueno tener un número de conteo real para mostrar.
Gracias por el código 🙂
Cómo hacer un conteo de vistas aleatorio entre (600,900)
por favor ayuda..
¿cómo detengo el aumento automático del conteo al actualizar la página?
Hola, muy buenos consejos. Gracias por compartir con nosotros. Estoy usando un plugin y Google Analytics para rastrear las vistas de mi página.
Hola,
Quiero mostrar el conteo dentro de la clase meta, mi código meta es:
¿cómo imprimir el contador entre los meta como autor, fecha, categorías?