【ha-Basic】独自View数のカウント方法修正

公開日:2019年5月15日 Ver1.0の更新情報

【スポンサーリンク】








アクセス計測系のプラグインを使わなくてもどの記事がどの程度閲覧されているのかの目安が把握できるよう、【ha-Basic】では独自のView数カウント機能を搭載しています。

※アクセス数を計測するプラグインやサービスと同様にあくまでも目安です

プラグインとの大きな違いはデータの保存方法。

プラグインでは独自のテーブルをデータベース内などに用意して、いろいろなネタを引っ張れるように1アクセス1行にしているものが多く、アクセス数の増大や保存期間の長期化によって集計自体に時間がかかるようになって表示速度の低下を招くことがあります。

一方【ha-Basic】の機能は単純に何回閲覧されたかを確認できるだけに絞っており、各投稿のカスタムフィールドにアクセスがあるたびに数字を足していくだけなので、保存日数が増えてもアクセス数が増えてもデータが肥大化することはありません。

詳細なアクセス解析は誰でも使っている「Google Analytics」などで見ればいいわけですから、サイト上で見えるのは単純な数字だけで十分!という発想です。

この情報は

  • 投稿編集画面のカスタムフィールドの値で確認
  • 管理者がページを表示したときにのみタイトル下に表示
  • 投稿一覧画面にView数という列を追加し、そこに閲覧数を表示

と、確認するのに必要な場所へ表示されるようになっています。

また、この数字を元に人気記事のウィジェットをサイドバーなどに表示できるようになっています。
※裏技としてカスタムフィールドの値を変更すれば人気記事の順番を操作できます

これも得意のコピペで実装して満足していたのですが、数字を見るにどうやら「ログインしている人(管理者も含む)が確認のためにページ表示したものもカウントされているのでは?」と疑問が湧きました。

これはアクセス数が少ない公開サイトで【ha-Basic】を稼働させたからこそ分かる気づきでした(笑)。

そこでソースを確認すると全体は

/******************** 独自のアクセス数管理 ******************/
//アクセス数を保存
function set_post_views($postID) {
  $count_key = 'post_views_count';
  $count = get_post_meta($postID, $count_key, true);
  if($count==''){
      $count = 0;
      delete_post_meta($postID, $count_key);
      add_post_meta($postID, $count_key, '0');
  }else{
    $count++;
    update_post_meta($postID, $count_key, $count);
  }
}
//クローラーのアクセス判別
function is_bot() {
  $ua = $_SERVER['HTTP_USER_AGENT'];
  $bot = array(
        "googlebot",
        "msnbot",
        "yahoo"
  );
  foreach( $bot as $bot ) {
    if (stripos( $ua, $bot ) !== false){
      return true;
    }
  }
  return false;
}

のようになっています。流れとしては

  1. ページが表示される度にカスタムフィールドの値を更新して保存する
  2. Google,Yahoo,Bingボットからのアクセスはカウントしない

となっています。つまりログインしているかどうか?という判定はしていなかったということです。

判定してなければ当然カウントされていってしまうという単純なオチでした(笑)。

これを以下のように条件を加えて加工終了!これでログインしている人が閲覧してもカウントアップされなくなるので正確性が向上しました。
※前述しましたが、あくまでも目安の閲覧数です

/******************** 独自のアクセス数管理 ******************/
//アクセス数を保存
if ( is_user_logged_in() ) {
	} else {
function set_post_views($postID) {
  $count_key = 'post_views_count';
  $count = get_post_meta($postID, $count_key, true);
  if($count==''){
      $count = 0;
      delete_post_meta($postID, $count_key);
      add_post_meta($postID, $count_key, '0');
  }else{
    $count++;
    update_post_meta($postID, $count_key, $count);
  }
}
}
//クローラーのアクセス判別
function is_bot() {
  $ua = $_SERVER['HTTP_USER_AGENT'];
  $bot = array(
        "googlebot",
        "msnbot",
        "yahoo"
  );
  foreach( $bot as $bot ) {
    if (stripos( $ua, $bot ) !== false){
      return true;
    }
  }
  return false;
}

何をしてるのか?単純にログインしているかどうかを追加しただけです。

ただし、これでもまだアクセスがないのに数字が増えるという現象が出ます。それは恐らくカウントから除外している3大検索エンジンクローラー以外からのアクセスがあるからかと思われます。

参考:こんなにある検索エンジンクローラー

これを全部無視するようにするのはさすがにナンセンスかと思いますので、【ha-Basic】では3つにとどめておきますから、ご自身で追加してやってください。

こうしてオリジナルテーマの作成や編集をしていくとどんどんPHPやhtmlの知識が深まっていってちょっと楽しいです。

また今のバージョンのWordpressはコードのチェック機能があるので、昔のように間違ったコードで保存すると画面真っ白にはほぼなりませんし、どこが間違っているのか(残念ながらどうすればいいのかは書かれていません)も知らせてくれますから、ガンガンテストできてありがたいです。

よかったら【ha-Basic】テーマを使ってオリジナルな機能の実装など研究されてみてはいかがでしょうか??

いつでもご相談・お見積りの依頼を受け付けています

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。