【WordPress】カスタム投稿タイプでWP-PostViewsを使ったPVランキングを作る方法

/

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_typemeta_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_querykeyviewsを指定して、WP-PostViewsのPVデータを取得
  • orderbymeta_value_numにして、PV数の数値順に並べる

カテゴリーやタグで絞り込みたい場合は、tax_queryを追加します。

補足:ランキングプラグインの選び方

プラグイン特徴
WP-PostViews設置が簡単。PVデータを自前で持つのでGA不要
Simple GA RankingGoogle Analyticsのデータを使用。より正確だがGA設定が必要

制作段階でGAがまだ入っていないケースや、内部PVの除外設定が面倒な場合は、WP-PostViewsのほうが手軽です。