h2タグにGoogle Adsenseの広告を自動追加する方法

[WordPress] h2タグにGoogle Adsenseの広告を自動追加する方法

※ 当サイトは広告を含みます。

Google Adsenseの広告をh2タグごと、つまり見出し単位で自動的に表示する方法です。
よく採用されてる方法ですが、Google Adsense自体の自動広告を利用するよりもデザインの崩壊を防げます。

導入にはfunctions.phpを改造します。

また、自分自身のインプレッション数のカウントを防ぐため、別記事で紹介したダミー広告の仕組みも利用します。
以下の記事を読んだ前提で説明しますので、仕組みが不明な人は先に次の記事を読んでください。

◆ 安全にfunctions.phpをカスタマイズする方法
functions.phpの修正に不安がある人は以下を参考にしてください。

コードを追加する

functions.phpとかに以下のコードを追加します。


// GoogleAdsense: H2タグの手前に広告を追加
add_filter('the_content', function ($content) {

  $max_ad   = 8; // 表示する最大広告数
  $interval = 2; // 広告を表示する間隔
  $current  = 0; // 初期値(カウントアップされて0の時に広告が表示される)

  if ($max_ad == 0) {
    return $content;
  }

  $ad = <<< EOF
  <!-- ここにGoogle Adsense用の広告スクリプトを書く -->
  EOF;

  $dummy = <<< EOF
  <div>
    <img src="ここに画像のパスを書く" width="100%" height="auto" />
  </div>
  EOF;

  $code = !current_user_can('administrator') ? $ad : $dummy;

  $ad_output = <<< EOF
  <div>
    {$code}
  </div>
  EOF;

  $ad_count = 0;
  if (is_single() && !is_attachment()) {
    if (preg_match_all('/<h[2][^>]*>.*?<\/h[2]>/is', $content, $h2s)) {

      foreach ($h2s[0] as $h2) {
        if ($current == 0) {
          $content = preg_replace('/' . preg_quote($h2, '/') . '/', $ad_output . $h2, $content, 1);

          $ad_count++;
          if ($ad_count >= $max_ad) {
            break;
          }
        }

        $current++;
        $current %= $interval;
      }
    }
  }

  return $content;
}, 1024);

見出しの上に広告が表示されるので、横長かレスポンシブ対応の広告種類を採用するといいと思います。
後、優先度を下げて他の処理よりも後処理で実行されるようにしてます。これに関しては好みですかね。

仕組み

記事内の文字列からh2タグを検出して、そのタグの直前に広告用のスクリプトを自動追加してます。
正規表現を修正すればh2タグ以外も対象になりますが、広告の出し過ぎも規約違反に触れるためh2のみを推奨します。

管理人
管理人

正規表現の条件を変更したい場合は'/<h[2][^>]*>.*?<\/h[2]>/is'の内容を変えてください。

設定値

コードの上部に存在する3つの変数を変更すると、少しだけ広告の出し方を調整できます。

$max_ad 表示する最大広告数
$interval 広告を表示する間隔
$current 初期値(カウントアップされて0の時に広告が表示される)

$max_adは自動的に表示する広告の最大数、$intervalは1回広告を表示したら次の広告を表示するまでの間隔です。
つまり、$intervalに2と書けば、h2見出しが2個出現するごとに広告が表示されます。

$currentは分かりづらいと思いますが、これは見出しが出現するたびにカウントアップされ、広告を表示すると0に戻ります。
そして、その値の初期値が設定できます。つまり、1と書くと1つ分だけ広告を表示する見出し位置がズレます。

$max_ad = 3, $interval = 2, $current = 1の場合、2個目の見出しから2個間隔で最大3つの広告が表示されます。

あとがき

実はこの仕組みですが現在は無効化してます。理由は記事の途中に広告が表示されて鬱陶しいからです。
今は記事の上部とか特定位置に表示する方法を採用してますが、記事内に表示するならGoogle側の自動広告を利用するよりもマシなデザインになります。

管理人
管理人

全画面以外の自動広告はサイトのデザインが崩壊するから嫌。

りさ
りさ

このサイトは左右に空きが無いから仕方ないね。

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。