[WordPress]プラグイン無しで記事のアクセス数をカウントする関数と、アクセスランキングの表示を行うスニペット

記事のアクセス数をプラグイン無しでカウントする方法について。

今回は海外のこちらの記事を参考にしました。モロパクリじゃアレなので、集計したアクセス数の順番で「アクセスランキング一覧(人気記事一覧)」を表示するコードも作ってみます。

アクセス数をカウントする関数

参考にしたスニペットは、記事ごとのカスタムフィールドの値を操作する関数を使ってアクセス数をカウントしています。まず、functions.phpにこちらのコードを加えましょう。

最初にアクセスしたときは勿論「0(ゼロ)」なのですが、そのときに表示する文字は 9行目の「return “0 views”;」という部分になります。ので、変更したい場合はここの「”0 views”」を修正しましょう。

 

そして次に、アクセス数を表示したい位置で関数を使います(記事や固定ページでしか使えません)。自分がログインしている場合にカウントして欲しくない場合はis_user_logged_in()を使ってカウントを回避します。

これでアクセス数の表示、集計ができます。

アクセススランキングの表示

そして、上記のアクセス集計を使ってアクセスランキングを表示してみます。以下のソースコードをサイドバーなどに貼り付けて使います。投稿記事をアクセス数の順番で5記事表示するソースコードです。

もしカスタム投稿タイプで使いたい場合は4行目を修正、表示数を変更したい場合は5行目の数字を変更して使います。

参考記事:

[WordPress]複数のカスタムフィールドでソート | シーズクリエイターズブログ

is_user_logged_in:WordPress私的マニュアル

 

2014年09月13日追記:

すみません。「orderby」の指定を「’meta_value’」ではなく「’meta_value_num’」にしなければ正しい順番になりませんでした。上のソースコードでは7行目の部分を修正してあります。

2014年09月28日追記:

なんだかアクセス数が異様に伸びてしまうのですが、多分これは検索エンジンなどのBOTが原因かもしれません。これでは信用出来ない数字になるので、検索エンジンは除外するコードを追加してみます。

【PHP】アクセスがBOTかどうか判断する』にあるisBot()のソースコードをfunctions.phpに記述します。これはアクセスがBOTかどうかを判定する関数です。これを判定処理に追加します。

これでBOTのアクセスを除外できるでしょう。


人気記事の定義は「コメントの数順」や「ソーシャルでのシェア数順」などがあるのでとりあえずアクセスランキングという名前にしてみました。他には「よく読まれている記事」も良いと思います。

最終更新日:2014年9月28日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

  • 斉藤

    素晴らしい記事、すごく参考になりました!
    この方法をぜひ実践してみようと思ったのですが、
    例えば、viewの数をリセットする場合などはどうすれば良いのでしょうか?

    初心者な質問ですみません。
    一度設定したらカウントは元に戻せないのか気になったのですが、
    大変恐縮ではございますが、よかったら教えてもらえたらとても幸いでございます。

    • 参考になったようでなによりですm(__)m
      この記事で実装してる方法はカスタムフィールドに値を保存しているので、viewの数は簡単にリセットできます。

      投稿編集ページの右上にある「表示オプション」をクリックし”カスタムフィールド”にチェックを入れると、記事編集欄の下の方にカスタムフィールド一覧が表示されます。

      ここにviewの数が表示されていますので、手動で変更可能です~。

  • cenation

    初めまして。
    自分もviewをプラグイン無しで、設置できないものかと探しておりました。(自作では敷居が高いので 汗)
    こちらの大変素晴らしいコードを参考にviewを設置いたしました!

    一点、挙動的に対策がありましたらご教示いただきたいのですが。。

    view表示コード設置後、構築途中ページの作業時に確認・作業・確認…と繰り返してリロードを行っているのですが、該当の投稿ページを閲覧せずとも
    viewカウントが行われてしまいます。。(ランキング部分のview表示)
    上記コードは、基本的にリロードすれば
    「ページへ行かずとも自動でカウントされてしまう」
    ということでしょうか?

    また、「ログインしている場合にカウントしないならこちら」のコードや、
    「BOT回避」を含めたコードを挿入しましたが、
    こちらはwp管理画面へログインしなければコード設置以下のコンテンツが消えてしまします。。

    何か対策がございましたら、ご教示いただけますと幸いです!

  • SITER

    はじめまして。
    こちらのコード使わせて頂いております。

    利用しているサイトによって、0から変動しないものがありますが、
    それは思い当たる原因ってありますか?

    なにかヒントになりそうなものがありましたら、教えて頂けたらうれしいです。

    • はじめまして。
      記事の閲覧ありがとうございます。

      こちらのコードですが、キャッシュ機能が効いていると特に不具合が発生してしまいます。(キャッシュがあると変動しない可能性が高いです)
      自分自身他の方法で対策しているのですが、補足をしておりませんでした。
      以下の記事がご参考になります。
      https://www.imamura.biz/blog/18748

      「Jetpack Post Views」というプラグインでJetpackの集計データ保存し、このデータで人気記事一覧を表示する、という方法になります。

      • SITER

        ご返信ありがとうございます。

        もし、今回ご紹介された以外でのプラグインを
        使用しない観覧数の表示させる方法などがございましたら、このサイトで紹介してください。読みます。

        ありがとうございました。

トラックバック

    Trackback: https://increment-log.com/wordpress-access-count/trackback/