WordPress Popular Postsではviewをカウントする時に、ユニークユーザーの判定をしていません。
F5で同一ページをリロードするとそのページのviewが増えてしまったり、同じユーザーが何度もそのページを見た時にviewが増えてしまう問題があります。
この記事では、同一ユーザーが同じページを複数回表示した時に重複してviewをカウントしないようにするカスタマイズをご紹介します。
この記事の内容
WordPress Popular Postsで同一ユーザーの同一ページビューをカウントしないカスタマイズ
このコードでは、post_IDごとの訪問履歴が個別に追跡されます。
クッキーは1日間有効ですが、必要に応じて期間を変更できます。
同一ユーザーが同じページを24時間以内に複数回訪れても、1回しかカウントしません。
add_action('wpp_pre_update_views', function($post_ID, $views){
// Cookieの名前を設定します
$cookieName = 'page_views';
// クッキーから過去のページビュー情報を取得します
if(isset($_COOKIE[$cookieName])) {
$pageViews = json_decode($_COOKIE[$cookieName], true);
} else {
// クッキーが存在しない場合、新しい空の配列を作成します
$pageViews = [];
}
// 現在のページのURLを取得します(各ページで異なるURLを使用してください)
$currentURL = $post_ID;
if($_SERVER['REMOTE_ADDR']=="143.177.XXX.XXX"){
// 指定のIPの時はカウントしない
die();
}
// このページを訪れたことがないか確認します
if(!in_array($currentURL, $pageViews)) {
// 訪れたことがない場合、ページビューをカウントします
$pageViews[] = $currentURL;
// クッキーを更新します
setcookie($cookieName, json_encode($pageViews), time() + 24 * 3600); // 1日間有効なクッキー
}else{
// 訪れたことがある場合、ページビューをカウントしない
die();
}
},10,2);
特定のIPアドレスを除外するカスタマイズ
このカスタマイズで使用しているアクションフックを使ったカスタマイズは、別の記事でもご紹介していますので、参考にしてください。
あわせて読みたい

WordPress popular posts|特定のIPを除外して記録するカスタマイズ WordPress popular postsは大変便利なプラグインなのでお気に入りです。 しかし、Wordpress popular postsは、viewの記録の条件が3種類しかありません。 WordPress popu…
まとめ
WordPress Popular Postsは便利です。しかし、初期状態ではGoogleAnalyticsのようなユニークユーザーによるPVをカウントすることはできません。
同一ユーザーが同一ページを何度も訪れてしまうと、そのユーザーの影響でページビューが増えてしまいます。ページビューが多いサイトであれば、あまり気にしなくてもいい問題かもしれませんが、ユニークユーザーによるPVを正確にカウントしたい場合には、今回の記事でご紹介したカスタマイズで簡単に対応できます。
コメント