¿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.
gracias
Agregué remove_action(), pero aún así suma 1 al conteo de la publicación reciente cuando abro cualquiera de ellas. Por favor, ayúdenme.
¡Hola, gracias! Pero no obtengo la imagen con las vistas como la muestras aquí. ¿Puedes ayudarme con esto para obtener también la imagen?
He descubierto que este fragmento de código no coincide con lo que veo en mis estadísticas de Jetpack. ¿Alguien más tiene el mismo problema?
cuenta solo vistas únicas, ¿cómo cambiarlo para que cuente cada vista individual (cada refresco)?
¡Excelentes consejos! Muchas gracias.
¡Excelentes consejos! Gracias por compartir. Sin embargo, necesitaría un poco más de ayuda.
¿Me gustaría mostrar las publicaciones más populares solo de la última semana o mes? ¿Alguien puede ayudar? ¡Gracias.
Gran fragmento. Funciona de maravilla.
¿Sabes si es posible tener ahora una lista de "Categorías más populares", basada en las categorías de las publicaciones más vistas?
He probado este código, inserta el conteo pero muestra el mismo conteo para todas las publicaciones, incluso después de haber agregado
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
¿Alguna idea?
Esto parece funcionar, pero veo un problema en mi caso particular... Estoy usando este código dentro de un widget de barra lateral (agregando el conteo de lecturas a una consulta de las últimas publicaciones):
$args = array( ‘numberposts’ => 3, ‘order’=> ‘ASC’, ‘orderby’ => ‘title’ );
$postslist = get_posts( $args );
foreach ($postslist as $post) : setup_postdata($post);
setPostViews(get_the_ID()); ?>
Veo dos cosas:
– Las tres publicaciones listadas siempre muestran un conteo incremental en comparación entre sí (publicación 1 = 0 vistas, 2 = 1 vista, 3 = 2 vistas). No estoy seguro de que sea exacto.
– Cuando actualizo la página, a todas se les suman 3 al conteo (0, 1 y 2 ahora muestran 3, 4 y 5). Agregué el código remove_action a functions.php pero parece que no tuvo ningún efecto.
No estoy seguro de cuál podría ser la causa de esto....
cuando creo una nueva pestaña en firefox, y se incrementa en 1, pero actualizo la página, se incrementa en 2.
¿Alguien tiene el mismo problema? ¿por qué sucede? ¿debido al navegador?
hmmmmmm, ¿cómo puedo disminuir en uno después de, digamos, 24 horas, o incrementar?
Déjame ver si entiendo correctamente, ¿quieres restar uno de cada vista cada 24 horas?
Sí, por cada visita, resta una visita 24 horas después. ¿Entiendes? Terminé usando un cron job. Si tienes una solución más fácil, soy todo oídos.
Un cron es la mejor manera, otra forma dependería de que la gente viera una página para decrementar y podría quedarse muy atrás fácilmente.
[…] Rastrea las vistas de las publicaciones usando metadatos de publicación […]
gracias hombre por tu trabajo.. es genial
excelente trabajo
¿puedo obtener el código
para mostrar las publicaciones más vistas en un widget o página
Kevin,
¿se puede usar este script para tipos de publicación personalizados?
Hola Rafa, deberías poder usar esto sin ningún problema.
Ok, lo intentaré. ¿Cómo hacemos para que los recuentos de vistas se muestren en las columnas de publicaciones de administrador de CPT?
¡Gracias!
Resolví mi problema, tuve que agregar "post_type=any" a la consulta y ahora veo todos mis tipos de publicación personalizados.
¡Genial! Gracias por el código, parece que está funcionando muy bien.
Muchas gracias querido… Un gran trabajo…
Ayer dije que funciona… pero de alguna manera cuando hacemos clic en una publicación, calcula bien, pero cuando vamos a la segunda publicación más nueva y luego a la publicación más nueva, el recuento para la publicación más nueva se incrementa en 2. Se puede ver un patrón similar con tres.
En caso de tres publicaciones, si vamos a la tercera publicación más reciente, se incrementará en 1, pero cuando vayamos a la segunda publicación más reciente, se incrementará en 2 y luego, al ir a la publicación más reciente, también se incrementará en 2.
Sería genial si alguien pudiera ayudar con este problema.
yo también, cada publicación se incrementa en 2. ¿por qué???
funciona en Chrome, Firefox, pero en Safari, al actualizar la página, el número de vistas aumenta en 2, ¿hay alguna solución, alguien ha probado en Safari?
Encontré el problema, una línea de código jquery hace que cuente dos veces al actualizar, no sé por qué, pero lo arreglé.
Hola, tengo el mismo problema. ¿Puedes ayudarme, por favor? A mí me cuenta dos veces en todos los navegadores.
¡Hola a todos!
¡Grandes consejos! Muchas gracias.
Me preguntaba si podemos agregar un dato de "tiempo"?
Porque me gustaría mostrar la vista de ayer / hace 2 días / hace 2 días, etc...?
wp_get_archives te permite definir un período de tiempo corto, algo como esto creo que sería útil.
http://codex.wordpress.org/Function_Reference/wp_get_archives
Ok, entiendo lo que quieres decir, pero esto no es exactamente lo que quiero.
Me gustaría hacer una especie de gráfico.
Para hacer una función que muestre si la publicación tiene vistas positivas o negativas. Así que quiero comparar las vistas de ayer y de hoy.
Bueno, eso es mucho más complejo, te sugeriría algo más simple, busca un plugin como este.
http://wordpress.org/extend/plugins/official-statcounter-plugin-for-wordpress/
Hola Kevin – ¡Genial! 😉 Pregunta rápida: Me funciona bien, pero el conteo empieza desde 0. ¿Es posible recuperar las vistas que ya tenía en las publicaciones? Gracias.
Hola Hugo,
Bueno, el fragmento se guarda en post meta, así que si hubieras eliminado el fragmento y lo hubieras agregado de nuevo, debería continuar desde los últimos valores. Sin embargo, siempre puedes editar los campos personalizados para cambiar los valores.
Hola
Kevin Chard , vengo de Vietnam, mi inglés no es bueno 🙁
Quiero hacerte una pregunta 🙂 : ¿cómo mostrar las vistas de las publicaciones solo para el administrador (solo el administrador puede ver las vistas de las publicaciones)? 😀
Puedes enviar el código a través de mi correo electrónico 😀
este fragmento mostrará las vistas de las publicaciones dentro de la columna de publicaciones en el administrador. Sin embargo, si quieres mostrarlo dentro del sitio pero solo para administradores, puedes hacer esto.
if(is_admin()){
echo getPostViews(get_the_ID());
}
Kevin, ¿cómo puedo configurarlo para que solo cuente a los visitantes que no son administradores? Esto no es un problema de visualización, sino de conteo. Estoy seguro de que !is_admin() está involucrado, pero no sé dónde. Gracias por los excelentes fragmentos, por cierto.
Esto debería funcionar para ti, solo reemplaza el código del paso uno con el siguiente.
if(!current_user_can(‘administrator’)){
echo setPostViews(get_the_ID());
}
¿Cómo podemos mostrar las vistas de las publicaciones solo en la página de administración donde se muestran todas las publicaciones? Me refiero a la página edit.php
Publiqué un fragmento para hacer precisamente eso.
http://wpsnipp.com/index.php/functions-php/display-post-views-within-admin-post-columns/
¿cómo eliminar la palabra “Views”?
Edita la línea 9
Gracias, lo estoy usando en un sitio NUEVO y está funcionando brillantemente…
Estoy aprendiendo PHP sobre la marcha, así que tu código me enseñó un par de cosas.. GRACIAS DE NUEVO…
Genial Zaid, me alegra saber que te gusta el sitio y espero que disfrutes de los fragmentos.