Google アドセンスで、
自分のアクセスを除外する方法について解説します。
私は Google アドセンスは、
自動広告配信は使わず、手動で配置を決められる「ディスプレイ広告」で使っています。
なぜアドセンスで自分のアクセスを除外すべきなの?
Googleアドセンスの収益には、
1)クリック収益:クリックして収益が発生する
2)インプレッション収益:広告が表示されて収益が発生する
この2つがあります。
そして Googleアドセンスは
2024年より インプレッション収益がメインに移行しつつあります。
Gigazine:「GoogleがAdsense広告を2024年に「クリック単価」から「インプレッション単価」に移行へ」
広告を表示するだけでも収益が発生する
インプレッションは、広告表示しただけで収益が発生します。
そのため、私のように
記事を何度も見直して書き直したり、
自分のサイトを何度も閲覧して手直しをする
こういう人は
作業するたびにアドセンスコードが送られることになります。
不正が疑われると、アドセンスが停止する
一つのサイトからのアクセスで
インプレッション収益が多く発生すると、
Google は
「不正をおこなった」
と判断し、広告配信の制限や停止をする場合があります。
これでは安心して
記事を見ながら作業することができません。
ですので、
自分のアクセスを除外させることは重要なことなのです。
PHPで、アドセンスから自分のアクセスを除外する
Gooble アドセンスから、
自分のアクセスを除外する方法はいくつかあります。
① プラグインをつかう → 不必要で、余計な機能がある
② Google サイトで、IPアドレスを指定する → 私はあちこちからアクセスするので、都合が良くない
ですが、
すでに書いてるように、私にはしっくり来ませんでした。
シンプルに使えるように、同じ方針で行きたいのです。
なので、 PHP を使うことにしました。
ところが・・・
トラブル発生。カスタムHTML に PHP を入れられない
私はアナリティクスの場合、
<head></head> の間にアナリティクスコードを入れています。
そして「自分のアクセスを除外」するために
次のように PHP でログインをチェックするようにしています。
<?php if ( !is_user_logged_in() ) : ?>
(アナリティクスのコード)
<?php endif; ?>
これと同じようにできるかと、かんたんに思っていました。
ところがワードプレスの仕様上、
カスタムHTML に PHPコードを仕込むことはできないことがわかりました。
ショートコードをつかう
はて困りました。
またウェブで方法を探してみると、
自動広告配信での方法は見つかるのですが、
手動配信での方法がほとんどみつかりません。
上にも書いたとおり、
私は自動広告配信は使いません。
すべて手動で広告を設置する場所を決めています。
そのため、
色々と試行錯誤した結果、
① PHPコードを functions.php に書き
② 関数をショートコードとして登録
このようにして
どこからでも呼び出せるようにすることにしました。
アドセンスから自分を除外するPHPコード
今回期待する動作は、以下のようになります。
1.WP にログインしている人 → ダミーの画像ファイルが表示される
2.ログインしていない読者 → アドセンスの広告が表示される。
動作環境
ここで紹介するコードは、次のバージョンで実際に動作しています。
- ワードプレス: 6.7.1
- SWELL:2.13.0
- PHP:8.0.30
functions.php に追加したコード
SWELL の子テーマの functions.php に次のコードを追加しています。(実際のアドセンスのコードとダミー画像ファイルのURL は割愛させていただいています。)
functions.php の追加コード:
add_shortcode('adsense_post', function($atts, $content, $tag ){
if (is_user_logged_in()) { <ーーー ①
return <<<EOF
<div>
<img src="画像ファイルのURL" width="100%" height="auto" /> <ーーー ②
</div>
EOF;
}else{
return <<<EOF
(ここにアドセンスの広告コードを入れる) <ーーー ③
EOF;
}
});
このPHPコードを呼び出すには、次のショートコードで呼び出します。
ショートコード:
[adsense_post]
このショートコードを使えば、記事のどこからでも呼び出すことができます。
ログインをしているかどうかの条件分岐で、
出力される HTML がダミー画像、もしくはGoogleアドセンスのコードのどちらかに切り替わります。
コードの解説
① is_user_logged_in() は、ログイン状態で true を返します。
② if 文で分岐し、ログインしているときはダミーの画像ファイルが表示するようにします。
ダミーの画像ファイルを表示させているのは、
自分が記事を見るときにレイアウトがくずれないようにするためです。
アドセンスの広告のサイズに合わせたダミーの画像ファイルを用意すると良いでしょう。
③ else 文のカッコ内では、Googleアドセンスの javascript コードをそのまま貼り付けてます。
読者がログイン状態ではないと判断された場合は、
この Googleアドセンスのコードが実行され、インプレッションが発生したことを Google に知らせます。
ウィジェットでショートコードを呼び出す設定
記事ひとつひとつに、ショートコードを呼び出すのは、効率が悪いです。
ですので、
私はウィジェットで呼び出しています。
SWELL には
次のウィジェットがありますが、この4つに設置しています。
- 記事上部
- 記事下部
- トップページ上
- トップページ下
それぞれのウィジェットに
「カスタムHTML」ウィジェットを設置し、上記のショートコードで呼び出しています。
注:ちなみに、ショートコードの上の <p>〜</p> は、「<PR>」の文字です。
これで、完了です。
謝辞
PHPコードを作成する際には、
次のブログを参照させていただきました。
ありがとうございました。