J'ai récemment appris que si vous avez WordPress.com Stats installé, vous pouvez tirer parti de stats_get_csv()
(élément du plugin WordPress.com Stats ).
<?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; ?>
Voilà comment j'ai mon code mis en place maintenant. Le problème est qu'il montre des pages aussi bien que des publications. En outre, je souhaite ajouter la vignette en vedette à côté de chaque élément, ainsi qu'un tableau de types d'articles personnalisés. Est-ce possible? Si oui, quelqu'un peut-il m'aider?
L'API renvoie les colonnes suivantes lorsque vous interrogez la table postviews
:
Pour mon blog, la colonne post_id
était vide ou 0
(pour la page d'accueil). Donc, à moins que vous n'ayez de bonnes valeurs, vous devrez travailler à partir de la valeur post_permalink
et déterminer s'il s'agit d'une page ou d'un message (via une requête sur la base de données ou une expression régulière sur l'URL?), Puis interrogez votre base de données pour obtenir le résultat. poster une vignette, car l’API de statistiques WordPress.com ne collecte pas d’informations à ce sujet.
L'API WordPress.com Stats n'offre actuellement pas de filtre post_type. Vous pouvez en implémenter vous-même de plusieurs façons. L'idée de base est de parcourir le post_id
s pour déterminer ceux qui ont un post_type
de post
. Dans votre boucle, vous pouvez utiliser quelque chose comme ceci:
$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 = '';
En ce qui concerne les pages à exclure, si vous ne disposez que de quelques pages, vous pouvez le faire comme décrit ici :
Dans votre boucle foreach, avant le <li>, ajoutez:
$postTitle = $single_post['post_title'];
if($postTitle == 'Home page') {