Googleアドセンスの広告表示をちょっとだけ高速化したときに、JavaScript(jQuery)で複数のアドセンス広告にまとめて広告データを追加するようにしたのですが、それをさらにアレンジして、広告表示の効率化をはかりたいと思います。
まず、すべての広告コードから「<script>(adsbygoogle = ~ )</script>」を削除。
<ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-123456789" data-ad-slot="123456789"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
次に、アドセンス広告にまとめて広告データを追加するために、以下のコードを入力。
(デザイン→カスタマイズ→フッタにコードを入力)
<script> document.addEventListener('DOMContentLoaded', function() { var num = 2; /* 広告の数 */ for(var i = 0; i < num; i++) { (adsbygoogle = window.adsbygoogle || []).push({}); } }); </script>
広告ごとに追加(push)していた広告データを、広告の数だけあとでまとめて追加(push)します。ページ内に表示している広告が2つなら「num = 2」となります。
また、ページごとに広告の数が違う場合は、以下のように条件分岐させます。
<script> document.addEventListener('DOMContentLoaded', function() { var num = 0; /* 初期化 */ if($('.page-index')[0]) { /* トップページ */ var num = 8; /* 広告の数 */ } else if($('.page-entry')[0]){ /* 個別記事 */ var num = 3; /* 広告の数 */ } else if($('.page-archive')[0]){ /* カテゴリーや月別アーカイブ */ var num = 2; /* 広告の数 */ } for(var i = 0; i < num; i++) { (adsbygoogle = window.adsbygoogle || []).push({}); } }); </script>
「$('.adsbygoogle').each(function() { ~」で、class名が「adsbygoogle」の箇所を繰り返し探してデータを追加(push)するより、ブラウザに負担がかからなくていいい感じ。
- 追記 -
Googleアドセンスのアカウントが非承認(無効化)されたのでお知らせするとともに、この記事を参考にするとアカウントが無効にされる恐れがありますのでご注意ください!