記事も増えてきたのでそろそろブログにランキングを表示させたいなと思い、色々なプラグインを試してみたのですが、どれもカスタマイズに限界があり断念。 人気記事の投稿IDだけ取得出来れば…と思っていたところ、Jetpackのstats_get_csv関数でやりたいことが実現できました。出力もデザインもカスタマイズし放題です。 今回は Ateitexe様 の記事を参考にカスタマイズしました。
Jetpack by WordPress.comの情報を取得して人気記事を表示する http://ateitexe.com/jetpack-popular-post/
ランキングを表示するコード
[php] $days = 7; $limit = 10; $args = array( ‘days’ => $days, ‘limit’ => $limit + 2 ); $ranking = stats_get_csv(‘postviews’, $args); foreach($ranking as $post) { if($post[‘post_id’] != 0 && $post[‘post_id’] != get_the_ID()) { var_dump($post); $i++; if($i >= $limit) { break; } } } [/php] 使うときは10行目「var_dump($post);」を削除して、お好みで書き変えてください。 下の方でそれぞれの行で何をしているのか解説しているので、ここから更にカスタマイズしたい方は是非参考にしてください。 サムネイル画像などの出し方については更に下の方で紹介しています。それぞれの処理の解説
[php] $days = 7; $limit = 10; [/php]$days
は閲覧数を取得する期間、$limit
は表示させる件数です。 上記の場合は7日間のランキングを10位まで表示します。 [php firstline=”3″ classname=”break”] $args = array( ‘days’ => $days, ‘limit’ => $limit + 2 ); $ranking = stats_get_csv(‘postviews’, $args); [/php] stats_get_csv関数で人気記事を取得します。 var_dumpすると分かりますが、トップページと現在のページも取得します。 9行目にトップページと現在のページを除外するif文が書いてあるので、最大2件が除外されることを考えて2件多めに記事を取得しています。 [php firstline=”8″ classname=”break”] foreach($ranking as $post) { if($post[‘post_id’] != 0 && $post[‘post_id’] != get_the_ID()) { var_dump($post); $i++; if($i >= $limit) { break; } } } [/php] 11行目で処理の回数(取得した記事の数)をカウントし、12~14行目のIF文で、指定した数($limit)を超えたら繰り返しの処理を抜けます。