WordPressのPV数を取得できるプラグイン「WP-PostViews」を使って、カスタム投稿タイプでオリジナルデザインのランキングを作成する方法をまとめます。
通常の投稿の場合
$postsview = get_posts(array(
'numberposts' => 5,
'meta_key' => 'views',
'orderby' => 'meta_value_num',
));
foreach ($postsview as $post) :
setup_postdata($post);
// ここに中身
endforeach;
wp_reset_postdata();
カスタム投稿タイプの場合
カスタム投稿タイプで使う場合は、post_typeとmeta_queryの指定が必要です。
<ul class="ranking-list">
<?php
$postsview = get_posts(array(
'numberposts' => 5,
'post_type' => 'news', // カスタム投稿タイプのスラッグ
'post_status' => 'publish',
'orderby' => 'meta_value_num',
'meta_query' => array(
array(
'key' => 'views',
)
)
));
foreach ($postsview as $post) :
setup_postdata($post);
$thumbnail = get_the_post_thumbnail_url($post->ID, 'medium');
$permalink = get_permalink($post->ID);
?>
<li class="ranking-item">
<a href="<?php echo esc_url($permalink); ?>">
<?php if ($thumbnail) : ?>
<img src="<?php echo esc_url($thumbnail); ?>" alt="" loading="lazy">
<?php endif; ?>
<div class="ranking-info">
<time datetime="<?php echo get_the_date('Y-m-d'); ?>"><?php echo get_the_date('Y.m.d'); ?></time>
<h2><?php the_title(); ?></h2>
</div>
</a>
</li>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
</ul>
ポイント
post_type— 表示したいカスタム投稿タイプのスラッグを指定numberposts— 表示したい件数meta_queryのkeyにviewsを指定して、WP-PostViewsのPVデータを取得orderbyをmeta_value_numにして、PV数の数値順に並べる
カテゴリーやタグで絞り込みたい場合は、tax_queryを追加します。
補足:ランキングプラグインの選び方
| プラグイン | 特徴 |
|---|---|
| WP-PostViews | 設置が簡単。PVデータを自前で持つのでGA不要 |
| Simple GA Ranking | Google Analyticsのデータを使用。より正確だがGA設定が必要 |
制作段階でGAがまだ入っていないケースや、内部PVの除外設定が面倒な場合は、WP-PostViewsのほうが手軽です。