I recently learned that if you have WordPress.com Stats installed, you can take advantage of stats_get_csv()
(Part of the 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="https://wordpress.stackexchange.com/questions/12189/<?php echo $p["post_permalink']; ?>"><?php echo $p['post_title']; ?></a></li>
<?php endforeach; ?>
</ol>
<?php endif; ?>
That’s how I have my code set up now. The problem is that it shows pages as well as posts. Also, I want to add the featured thumbnail next to each item as well as an array of custom post types. Is this possible? If so, can someone help me out?
3 Answers
The API returns the following columns when you query the postviews
table:
- date
- post_id
- post_title
- post_permalink
- views
For my blog the post_id
column was either empty or 0
(for the homepage). So unless you have good values there, you will have to work from the post_permalink
value and determine whether it is a page or a post (via a query on the database or a regex on the URL?), and then query your database for the post thumbnail, because the WordPress.com stats API does not collect info on that.