Cómo consultar las entradas más vistas y mostrar el top 5

17 abr 2012, 21:54:05
Vistas: 40.8K
Votos: 10

Así es como estoy obteniendo las vistas para una entrada:

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 Vista";
        }
        return $count.' Vistas';
    }

Digamos que quiero encontrar las entradas más vistas de entre 5,000 entradas y quiero mostrar las 5 entradas más vistas.

¿Cómo puedo hacer una consulta para lograr esto?

// Aquí está la consulta para obtener las 5 entradas más vistas
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
);

$popular_posts = new WP_Query($args);

// Mostrar las entradas
if($popular_posts->have_posts()) :
    while($popular_posts->have_posts()) : $popular_posts->the_post();
        echo '<h2>' . get_the_title() . '</h2>';
        echo 'Vistas: ' . getPostViews(get_the_ID());
    endwhile;
    wp_reset_postdata();
endif;
0
Todas las respuestas a la pregunta 2
1
18

Consulta esta sección del Codex para aprender cómo crear una consulta personalizada: http://codex.wordpress.org/Class_Reference/WP_Query

Tu consulta será algo como:

$query = new WP_Query( array(
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'posts_per_page' => 5
) );

Por defecto, el orden será de mayor a menor, dándote así los 5 "más populares".

18 abr 2012 00:31:35
Comentarios

¿Qué hay de la función para generar el conteo de vistas de las publicaciones? ¿De dónde viene eso?

Brad Dalton Brad Dalton
3 jun 2014 11:31:03
0

Consulta esta sección del Codex para aprender cómo crear una consulta personalizada: http://codex.wordpress.org/Class_Reference/WP_Query

este código funcionará

$query = new WP_Query( array(
    'meta_key' => 'post_views_count', // Clave meta para ordenar
    'orderby' => 'meta_value_num',   // Ordenar por valor numérico del meta
    'posts_per_page' => 5            // Mostrar 5 posts por página
) );
3 jun 2014 10:13:43