WordPressを超高速で動作させられるKUSANAGI。ですが、KUSANAGIを使用しているサイトのGoogle アドセンスのページビューを確認してみると、明らかにアクセス解析ツール(Google Analyticsなど)で確認できるアクセス数よりも極端に多くなっているケースがあります。

そこで今回は、なぜKUSANAGIを使用するとGoogleアドセンスの表示回数が水増しされてしまうのか、その問題の解決方法を解説していきます。

KUSANAGIを使うとアドセンスのページビューが水増しされる原因

これはKUSANAGIプラグインで管理できるページキャッシュ機能(bcache)が原因です。

KUSANAGIは事前にキャッシュを作成して、ユーザーアクセスがあったときにキャッシュページを高速で表示することができるのですが、このキャッシュ生成処理ではGoogle アドセンスのコードを含むJavaScriptが一度実行されるため、ページビューの水増しが起きてしまうのです。

bcache機能を無効化すれば改善されますが、キャッシュ機能を無効化するとパフォーマンスが低下してしまうのでできれば避けておきたい方もいるでしょう(fcacheだけでも高速化出来ますが、bcacheがあるとさらに高速化可能です)。

KUSANAGI使用時にアドセンスのページビューが水増しされないようにする方法

KUSANAGI使用時にアドセンスのページビューが水増しされないようにするには少しテクニカルな方法が必要です。

 

KUSANAGIからのアクセスを受けたときのみPHPでアドセンスを非表示にする方法もありますが、その方法だと正しく除外されません。

KUSANAGIがキャッシュを作成(bcache)するためにアクセスした分はアドセンスが除外されますが、訪問ユーザーにはアドセンスが除外されたキャッシュが表示されるため、ユーザーにアドセンスを表示できずアドセンス収入を得ることが出来ません。

キャッシュが作成される前にユーザーがアクセスしてきた場合は、そのページがキャッシュされるためアドセンスが表示されたページがKUSANAGIにキャッシュされ、定期的にそのキャッシュにアクセスするようになります。

このような理由があるため少しテクニカルな方法をとる必要があるのです。作業としては以下のとおりです。

  • APIサーバーを構築する
  • アドセンスコードから一部のコードを取り除く
  • アドセンスコード追加用のJavaScriptを挿入する

IPアドレス取得用のAPIサーバーを構築する

KUSANAGIからのアクセスのみアドセンスを非表示にしたい場合は、まずIPアドレス検出用のAPIサーバーを構築します。

WordPressを使ってREST APIを使ってAPIサーバーを構築できるため、別でAPIサーバーを用意する必要はないのではないかと思うかもしれませんが、KUSANAGI×KUSANAGI環境の場合はREST APIの出力結果すらもキャッシュされてしまう(fcacheを有効化しているとKUSANAGIから無効化出来ない)ため、別の対策を取る必要があります。

もちろんfacheを設定できる方なら同じWordPressでAPIサーバーを構築しても問題ありませんが、そうでない方は別のWordPressを立ち上げたほうがカンタンです。

まずはサブドメインでもなんでもいいのでWordPressサイトを新規作成してください。テーマはデフォルトのままでよく、プラグインも必要ありません。

構築したWordPressをKUSANAGI上で動作させている場合はすべてのキャッシュ機能を無効化してください。

次にテーマのfunctions.phpに以下のコードを追記します。

function add_ip_get_restapi()
{
register_rest_route(
'get/v0',
'/remote_ipaddress',
[
'methods' => 'GET',
'callback' => 'get_ipaddress'
]
);

}
add_action('rest_api_init', 'add_ip_get_restapi');

//訪問ユーザーのIPアドレスを確認する
function get_ipaddress(){
return $_SERVER["REMOTE_ADDR"];
}

このコードを追記して保存したらAPIサーバーの構築完了です。試しに「サイトアドレス/wp-json/get/v0/remote_ipaddress」にアクセスしてみてください。現在のIPアドレスが表示されたはずです。

アドセンスコードから一部コードを取り除く

次は、サイトに貼り付けているすべてのアドセンスコードから

<script async class="removejs" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

を削除します。このスクリプトファイルが読み込まれるとアドセンスの広告が表示される仕組みであるため、設置している全てのアドセンスからのこのコードを削除するとアドセンス広告が表示されなくなります。

一つでも残っているとアドセンス広告が表示されるので注意してください。

削除したらアドセンスコード関係の作業は一旦終了です。

テーマにJavaScriptを読み込ませる

このままではアドセンス広告が表示されないので、KUSANAGI以外のアクセスだった場合のみアドセンス広告を表示するJavaScriptコードを追加します。

以下のコードを貼り付けたJavaScriptファイルを作成し、テーマフォルダにアップロードしてください(この解説ではファイル名をjavascript.jsとしました)。

jQuery.getJSON('https://APIサーバーのサイトアドレス/wp-json/get/v0/remote_ipaddress',function(ip){
if(ip=='WordPress設置サーバーのIPアドレス' ||
ip=='127.0.0.1'
){
//なにもしない
}else{
//アドセンスタグの動的追加
var script = document.createElement('script');
script.setAttribute('src', 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js');
document.head.appendChild(script);
}

}

});

サイトごとに修正が必要な箇所は1行目のAPIサーバーのIPアドレスと3行目のWordPress設置サーバーのIPアドレスです。この2点が重要なので必ず正しいものを入力するようにしてください。

これでKUSANAGIがアクセスしたときはアドセンスが表示されず、ユーザーが訪問したときは正常にアドセンスが表示されるようになります。

子テーマを使用しない場合、テーマをアップデートするとアドセンス読み込み処理が消えてしまうので気をつけてください。

WordPressのカスタマイズはお任せください

アドセンスページビュー水増し問題に限らず、WordPressのカスタマイズで困っていることがあればWordPressのお医者さんまでご相談下さい。

  • WordPressのページ表示速度を改善したい
  • 今後Google検索順位付けの指標にされるコアウェブバイタルに対応したい
  • セキュリティを強化したい

などなど。些細な問題でもいいので困ったことがあればご相談くださいませ。問い合わせフォームからの問い合わせ以外にもLINEでの問い合わせにも対応しています。