WordPressで1・2・3番目のH2見出し前に広告を挿入する方法(モバイル表示対応版)

2016-02-18Web制作

サイトURLが変更になりました!
https://0edition.net/
お手数ですがブックマーク・RSSの再登録お願いします。

見出し前・・・それは絶好の広告設置ポイント。

こんにちは、とみーです。

こちらの寝ログさんの記事を参考に、更にスマホ or PC&タブレットで広告の表示を分けるようにカスタマイズしました。
完成形イメージ図は寝ログさんの記事をご覧ください。

スマホかどうかの条件分岐はNaifixさんの記事を参考にさせていただきました。
(モバイルかどうか判定する関数はWordPressデフォルト関数であるのですが、タブレットも含まれてしまうため。今回はタブレットはPCと同じ表示にするようにします。)

PHPが全く分からない方でも安心! コピペでOKです!

スポンサーリンク

カスタマイズ方法

下記二つのコードを外観 > テーマの編集 > functions.php へコピー&ペーストしてください。

モバイル切り替え用関数

// ***********************************************************************************
// スマホ表示分岐
// ***********************************************************************************
function is_mobile(){
    $useragents = array(
        'iPhone', // iPhone
        'iPod', // iPod touch
        'Android.*Mobile', // 1.5+ Android *** Only mobile
        'Windows.*Phone', // *** Windows Phone
        'dream', // Pre 1.5 Android
        'CUPCAKE', // 1.5+ Android
        'blackberry9500', // Storm
        'blackberry9530', // Storm
        'blackberry9520', // Storm v2
        'blackberry9550', // Storm v2
        'blackberry9800', // Torch
        'webOS', // Palm Pre Experimental
        'incognito', // Other iPhone browser
        'webmate' // Other iPhone browser

    );
    $pattern = '/'.implode('|', $useragents).'/i';
    return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
}
※Simplicityをお使いの方は既にテーマ内にあるため、上記のコードはコピペ不要です。

H2見出し前広告表示関数

// ***********************************************************************************
// H2タグ前に広告を挿入
// ***********************************************************************************
function add_ad_before_h2_for_3times($the_content) {
//1つ目の広告タグを挿入(PC表示用)
$ad1_pc = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//2つ目の広告タグを挿入(PC表示用)
$ad2_pc = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//3つ目の広告タグを挿入(PC表示用)
$ad3_pc = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;

//1つ目の広告タグを挿入(モバイル表示用)
$ad1_mobile = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//2つ目の広告タグを挿入(モバイル表示用)
$ad2_mobile = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//3つ目の広告タグを挿入(モバイル表示用)
$ad3_mobile = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;

  if ( is_single() && !is_mobile() ) {//投稿ページ(PC)
    $h2 = '/^<h2.*?>.+?<\/h2>$/im';//H2見出しのパターン
    if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
      if ( $h2s[0] ) {//チェックは不要と思うけど一応
        if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][0], $ad1_pc.$h2s[0][0], $the_content);
        }
        if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][1], $ad2_pc.$h2s[0][1], $the_content);
        }
        if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][2], $ad3_pc.$h2s[0][2], $the_content);
        }
      }
    }
  } else if ( is_single() && is_mobile() ) {//投稿ページ(モバイル)
    $h2 = '/^<h2.*?>.+?<\/h2>$/im';//H2見出しのパターン
    if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
      if ( $h2s[0] ) {//チェックは不要と思うけど一応
        if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][0], $ad1_mobile.$h2s[0][0], $the_content);
        }
        if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][1], $ad2_mobile.$h2s[0][1], $the_content);
        }
        if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][2], $ad3_mobile.$h2s[0][2], $the_content);
        }
      }
    }
  }

  return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');

//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
を削除して、作成したアドセンスコードを挿入してください。

そのまま挿入するとテーマによっては下の段落に少し被る可能性があるので、pタグで囲むといいかもしれません。

1番目・2番目・3番目を全て同じアドセンスコードを使うと、当たり前ですが同じ広告が3つ表示されてしまいますので別々の広告ユニットを作成しましょう。
モバイル用も別に作成するとなると合計6つの広告ユニットが必要となります。

広告を並べたい場合はこちらのカスタマイズがおすすめです。

こちらの記事もおすすめです