WordPress:「WordPress Popular Posts」の順位情報を取得して通常のループなどで利用・表示する方法

WordPress:「WordPress Popular Posts」の順位情報を取得して通常のループなどで利用・表示する方法

ランキング形式の記事一覧を手軽に表示できるプラグイン「WordPress Popular Posts」で、一般的な使い方ではなくプラグインが持っている情報を取得して通常のループなどで利用・表示する方法です。

※紹介している内容は、WordPress Popular Posts Ver 4.2.2を使用した際のものになります。
プラグインの概要や使用方法などについては「WordPress Popular Posts」で確認してください。

ここではサンプルとして「WordPress Popular Posts」から取得した順位情報を、通常のループを用いた記事一覧で表示させていきます。

「WordPress Popular Posts」の情報取得にはWPP_Queryを利用します。
例えば下記のように記述することで「過去7日間で閲覧数が多い投稿」を取得することができ、どのような情報が取得できたのかはvar_dump( $rank_data );などで確認できます。

PHP

$wpp_args = array(
  'range' => 'last7days',
  'order_by' => 'views',
  'post_type' => 'post',
);
$wpp_query = new WPP_Query( $wpp_args );
$rank_data = $wpp_query->get_posts();

ちなみに、この場合は先述した条件に該当するすべての記事情報を取得してくるので、例えば上位10件のみといったように特定数だけ取得したいときは$wpp_args内に'limit' => 10のように追記してください。

次に上で取得してきた「WordPress Popular Posts」の情報を通常のループ内で利用・表示させます。
具体的にはarray_search()array_column()を組み合わせて「WordPress Popular Posts」の情報内に同じ投稿IDの記事があるかを探し、あった場合にそのインデックスが順位数として表示されるようにします。

PHP

if ( have_posts() ) {
  while ( have_posts() ) : the_post();
    $rank_num = array_search( get_the_ID(), array_column( $rank_data, 'id' ) );
    echo '<article>';
      if ( $rank_num !== false ) {
        echo '<div class="rank-num">' . ( $rank_num + 1 ) . '</div>';
      }
      echo '<h2>' . get_the_title() . '</h2>';
    echo '</article>';
  endwhile;
  the_posts_pagination();
}

それぞれ記述後にフロントで表示確認すると、ランキング対象の記事には順位数が表示されているのを確認できると思います。

利用する機会は少ないと思いますが、これを用いることで例えば基本的に新着順の記事一覧として表示しているがランキング上位の記事には順位を示すラベルを付けて目立たせるとかページビューを表示させるといった見栄えや実装が可能になります。

Close the search window,
please press close button or esc key.