お問い合わせ

WordPress Popular Posts|同一ユーザーの同一ページビューを除外する

WordPress Popular Postsではviewをカウントする時に、ユニークユーザーの判定をしていません。

F5で同一ページをリロードするとそのページのviewが増えてしまったり、同じユーザーが何度もそのページを見た時にviewが増えてしまう問題があります。

この記事では、同一ユーザーが同じページを複数回表示した時に重複してviewをカウントしないようにするカスタマイズをご紹介します。

WordPress Popular Postsで同一ユーザーの同一ページビューをカウントしないカスタマイズ

このコードでは、post_IDごとの訪問履歴が個別に追跡されます。

クッキーは1日間有効ですが、必要に応じて期間を変更できます。

同一ユーザーが同じページを24時間以内に複数回訪れても、1回しかカウントしません。

Cookieが無効化されている訪問者の場合は、このカスタマイズでは対応できません。

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は便利です。しかし、初期状態ではGoogleAnalyticsのようなユニークユーザーによるPVをカウントすることはできません。

同一ユーザーが同一ページを何度も訪れてしまうと、そのユーザーの影響でページビューが増えてしまいます。ページビューが多いサイトであれば、あまり気にしなくてもいい問題かもしれませんが、ユニークユーザーによるPVを正確にカウントしたい場合には、今回の記事でご紹介したカスタマイズで簡単に対応できます。

役に立ったら他の人にもシェア!
  • URLをコピーしました!
  • URLをコピーしました!
コメントを閉じる

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

クリックできる目次