Usando stats_get_csv para devolver una lista de publicaciones populares por vistas con miniaturas

2

Recientemente aprendí que si tienes las Estadísticas de WordPress.com instaladas, puedes aprovechar stats_get_csv() (Parte de WordPress .com Stats Plugin ).

<?php if ( function_exists('stats_get_csv') && $top_posts = stats_get_csv('postviews', 'days=-1&limit=4') ) : ?>
    <ol>
<?php foreach ( $top_posts as $p ) : ?>
        <li><a href="<?php echo $p['post_permalink']; ?>"><?php echo $p['post_title']; ?></a></li>
<?php endforeach; ?>
    </ol>
<?php endif; ?>

Así es como tengo mi código configurado ahora. El problema es que muestra páginas y publicaciones. Además, quiero agregar la miniatura destacada junto a cada elemento, así como una variedad de tipos de publicaciones personalizadas. es posible? Si es así, ¿puede alguien ayudarme?

    
pregunta jwp 16.03.2011 - 07:06

3 respuestas

3

La API devuelve las siguientes columnas cuando consulta la tabla postviews :

  • fecha
  • post_id
  • post_title
  • post_permalink
  • vistas

Para mi blog, la columna post_id estaba vacía o 0 (para la página de inicio). Entonces, a menos que tenga buenos valores allí, tendrá que trabajar desde el valor post_permalink y determinar si es una página o una publicación (a través de una consulta en la base de datos o una expresión regular en la URL), y luego consultar su base de datos. para la miniatura de la publicación, porque la API de estadísticas de WordPress.com no recopila información sobre eso.

    
respondido por el Jan Fabry 22.03.2011 - 15:19
2

La API de estadísticas de WordPress.com no ofrece actualmente un filtro de tipo de publicación. Puede implementar uno usted mismo de varias maneras. La idea básica es recorrer el post_id s para averiguar cuáles tienen un post_type de post . En tu bucle puedes usar algo como esto:

$post = get_post($p['post_id']);
if ( !isset($post->post_type) || $post->post_type != 'post' )
    continue;
if ( has_post_thumbnail( $post->ID ) )
    $thumbnail = get_the_post_thumbnail( $post->ID );
else
    $thumbnail = '';
    
respondido por el Andy 30.03.2011 - 04:26
1

En cuanto a las páginas excluyentes, si tiene pocas páginas, puede hacerlo como se describe aquí :

Dentro de su bucle foreach, antes de < li > añadir:

 $postTitle = $single_post['post_title'];
    if($postTitle == 'Home page') {
    
respondido por el Lea Cohen 16.03.2011 - 10:36

Lea otras preguntas en las etiquetas