2016年版 直近1ヶ月に投稿した記事直近1ヶ月に投稿した記事の人気順位を表示するテンプレート

2014年にこのblogで「直近1ヶ月に投稿した記事の人気順位を表示するテンプレートを作りました」という記事を書いて、このblogでも使っていました。
今日、ふとそのページを見ると正常に動いていません。おかしいなぁ~と思ってテンプレート自体を変更してみました。そのエラーの原因と直した方法について書きます。

直近1ヶ月に投稿した記事の人気順位がおかしかった件

このblogでは、

about>直近1ヶ月の人気投稿 をクリックするとここ1ヶ月に投稿した記事が人気順に表示されるようになっています。しかし、表示が

こんな風に3つしかされないようになってしまっていました。blogは平日毎日書いているので1ヶ月で3つしか投稿していないはずはありません。おかしい…ずっと正常に動いていたのに… と原因を考えてみました。

WordPress.comとWebサイトが連携しているサイトでは各投稿のView数が保存されているのでこのテンプレートはそのView数を参照して使っています。

社内で、「メールマガジンに掲載するネタとして直近1ヶ月の投稿を人気順で表示できないか?」と聞かれました。 人気記事はJetpackの統計情報で見ることができますが、投稿日の範

こちらの記事でその方法について書いてあります。今確認したところ新しくプラグインを入れるとか、書いてありますが、それは必要ありませんでした(^_^;。昔は結構まだよくわかってなくて、、すみません。

そのときのテンプレートのコードは

stats_get_csv という関数を使ってView数を取得する
・パラメーターとしてView数の参照日数=無制限、記事数の制限=無制限(すべての投稿のView数を取得)
・全件取ってきてから投稿日がこの1ヶ月のものだけ、をリスト表示

というロジックになっていました。

今時点でのこのコードで取得できたデータを全件見てみると503件しかありません。今現在のこのblogの投稿数は605件なので全件取れてきていません。。。ということは

・stats_get_csv という関数で件数を無制限にしても、取得できる件数は503件(ちょっと半端ですが)ではないか?

と推測しました。そもそも全件取ってきて日付で判定、というロジックは美しくないし当時みたいに数が少なければまぁ良かったですが(いいのか?)、このコードは気に入っていませんでした。

テンプレートのロジックを変えてみる

ということでテンプレートのロジックを変えてみることにしました。

stats_get_csv という関数には post_id というパラメーターもあるため、記事を指定してView数を取得することができます。

参考:Jetpack – stats_get_csv period parameter

ということを踏まえて、

・ここ1ヶ月に投稿した記事のIDを取得しておく
・View数の参照日数 無制限、記事数の制限 1、post_id指定でView数を取得して、IDごとの配列にView数を保存する
・保存した配列をView数の降順にsortする

というロジックにすればうまく表示できそうです。

テンプレートのロジックを変更してみた

考えたロジックでテンプレートを修正してみました。最初から作る場合はお使いの子テーマの page.php をコピーしてお好きな名前に変更します(例:page-recentOnemonthPostedPopular.php)。

ファイルを開いて、テンプレートだとわかるような記述を一番上に挿入します。

Template Name は固定ページの属性 テンプレートのリストボックスに表示されるので、他のテンプレートと重ならないような名前にします。

このPHPにはコンテンツを表示する部分がありますのでその部分を置き換えます。 たとえばSimplicityのpage.php(のコピー)であれば、

こんな感じのところです。twentyfourteenでは、

こんな感じのところです。テーマによって違うのでそれぞれコンテンツをどこで表示しているのかを探します。

その部分を以下のコードで置き換えます。

保存します。

そして、そのファイルをアップロードして、

ダッシュボード 固定ページ>新規追加 をクリックし、

タイトルを入力して、ページ属性>テンプレート のリストボックスから先ほどアップしたファイルの Template Name に記述した名前を選択します。

これで、公開して表示してみると

このように直近1ヶ月の投稿が、View数の多い順にすべて表示されました(^^)/

[Amazon sponsored link] WordPress デザイン 関連本
兎本美佳

ブログを見た人がそのままできたらいいなと思って、できるだけ丁寧に書いています。blogに書いたようなネタの有償対応のご相談は「ゆうそうと」へいただければと思います(^^)/
無償での対応をご希望の場合は、コメントをいただけましたら可能な場合はコメントを返させていただきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサー広告
ブログをメールで購読

メールアドレスを記入して購読すれば、更新をメールで受信できます。

261人の購読者に加わりましょう

トップへ戻る