【ソースコード有】CocoonでAdsense Invalid Click Protector設定しました!

Cocoon

約 10 分で読めます。



通常「アドセンス狩り」の対策であるAdsense Invalid Click ProtectorをCocoonで設定しました!

プラグインを入れて、
↓の設定画面だけ対応すれば終わりと思っていたのですが、



色々な記事
色々な記事

functions.phpなどでショートコード作ってサイトに埋め込まないと意味ないぞ

yatch
yatch

(゚Д゚)



ということで急遽対応しました。
思えば動作確認していなかったな…エンジニアなのにお恥ずかしい。

やったことは以下の通りです。
備忘録的意味合いも含め、解説していきます。

1. プラグインを入れる
2. 設定をする
3. ショートコードを作る
4. サイトに埋め込む
5. 動作確認する



参考にした動画を貼っておきます。

プラグインを入れる

解説するまでもないと思いますが、一応。
これを入れます。

設定をする

プラグインを入れ終わったら、設定をします。



といっても、こだわりのある方でなければ初期設定で十分だと思います。



各設定値の意味を調べてみました。
ご興味のある方は参考にしてみてください。

#項目名意味
1Set the Ad Click Limit指定時間内で何回までのクリックを許可するか
2Click Counter Cooke Expiration Time
(default: 3 hours)
クリック回数をリセットする時間
3Set the Visitor Ban Duration
(default: 7 days)
クリック上限突破時に広告非表示にする日数
4Do you want to use the IP-API Pro key?1分に150アクセス以上あるサイトではIP-API Pro利用を推奨していて、利用するかどうか
5Provide your IP-API Pro key利用する場合のキー文字列
6Do you want to block showing ads for some specific countries?特定の国からの広告クリックを回避したいか
7Banned Country List – Put ISO ALPHA-2 Country Codes
(Comma Seperated)
広告クリックさせたくない国コード
複数指定する場合はコンマ(,)で区切る

1から3まで

これは簡単ですね。
クリックしてもいい上限数、クリック数をカウントする時間、クリック上限突破時の広告非表示日数を決めているだけです。

解説動画でも言及していた注意点について、
このプラグインはCookieとプラグイン自身が持つデータベース両方でクリック数カウントや広告非表示すべきクライアント(スマホやPC)を管理しているとのことです。

ということは、
 Cookie: クライアントのブラウザーに保存
 データベース: WordPress側に保存
となりますね。

そのために、
広告非表示になったクライアントを↓で解除したい場合は注意しろ、とのこと。



なぜならば、
↑の画面で広告非表示クライアントから削除したとしても、Cookieがクライアント側のブラウザーに残っている間は期待動作にならない可能性があるからです。
 状態の不一致が発生する

そのため、Cookieが削除されるまで待ってから解除する方が安全です。

4から5まで

このプラグインではアクセス元の情報を取得するためにIP-API.comというサイトを使っていますが、
無料版ですと1分あたり150アクセスまでという制限があるようです。
 制限を超えた場合はHTTP 503が返る、とあります。



企業向けサイトなどアクセス数が多いサイトですと足りないこともありそうですが、IP-APIのPro版を使うとこの150アクセスという制限を外せる様子。

Pro版を契約するともらえる何かしらの識別文字列を↓に貼り付ければいいということですね。

6から7まで

特定の国からアクセスしたときに広告を表示させたくないときに使う設定です。

しかし、サイトは表示していいけど、広告は表示させたくないって、どんなときなんでしょうか…

ショートコードを作る

実施した設定内容に基づき、このプラグインを動作させましょう。

このサイトでは以下3つの広告を使っています。
それぞれ対応するショートコードを作っていきます。

広告タイプショートコード
スクエア型square_ad
インフィード広告infeed_ad
横長タイプwide_ad

ショートコードを追加するためにCocoonの子テーマにあるfunctions.phpを編集します。

yatch
yatch

ChromebookにJuiceSSHを入れて、LightsailにSSHログインしvimで編集しているけど、Visual Studio Codeでやりたいなあ…

具体的なコード

IDはXXXXといった具合に伏せますが、具体的なコードは以下の通りです。
 スクエア型で例示しますが、他の2つも同様です。

やっていることは単純で、

aicp_can_see_ads()で表示してもいいかどうかを確認する
表示してもよければ今まで通り広告を表示する
表示してはダメならエラーメッセージを表示する

となります。

9行目から21行目までが広告のコードとなります。
各々の広告コードに差し替えればOKです。

// スクエア型広告のショートコードsquare_adにsquare_ad_func関数を紐付ける
add_shortcode('square_ad', 'square_ad_func');

// square_ad_func関数を定義する
function square_ad_func() {
    if(aicp_can_see_ads()) {
    $adCode =
                '
                <div class="aicp">
                    <script async src="//pageads2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
                    <ins class="adsbygoogle"
                        style="display:block"
                        data-ad-client="ca-pub-XXXXXXXXXXXXXXXX"
                        data-ad-slot="XXXXXXXXXX"
                        data-ad-format="auto"
                        data-full-width-responsive="true">
                    </ins>
                    <script>
                        (adsbygoogle = window.adsbygoogle || []).push({});
                    </script>
                </div>
                ';
    return $adCode;
    } else {
        return '<div class="error">You have been blocked from seeing ads.</div>';
    }
}

// 同様にインフィード広告、横長タイプも実施
add_shortcode('infeed_ad', 'infeed_ad_func');
function infeed_ad_func() {
(略)
}

add_shortcode('wide_ad', 'wide_ad_func');
function wide_ad_func() {
(略)
}

サイトに埋め込む

埋め込みは他のショートコードと同様です。

カスタマイズから、



入れ込みたいウィジェットでショートコードを書くだけです。

動作確認する

広告表示切替が動いているか簡単に確認するには、JPを広告表示の国に入れるのが楽です。



↓のように広告が表示されなければ成功です。

終わりに

いかがでしたか。

プラグインを入れればそれで終わりだと思っている方は意外に多いのでは?

この記事があなたの助けになれば嬉しいです!

SNSなどでコメントあると喜びます!

この記事を書いた人

組込ソフト歴15年の外資系エンジニア。
前職で組込Linuxを使った商品設計/品質確保の業務に従事。
Raspberry Piが好き。
株式投資で年50万円を稼ぐ。
妻は香港人(国際結婚)。

Please follow me
CocoonWordpress
Please follow me
世界Linux新聞

Comments

タイトルとURLをコピーしました