WordPressで1・2・3番目のH2見出し前に広告を挿入する方法(モバイル表示対応版)
見出し前…それは絶好の広告設置ポイント。
この記事では、1・2・3番目のH2見出し前に広告を自動的に挿入する方法を説明しています。
寝ログさんの記事を参考に、更にスマホ or PC&タブレットで広告の表示を分けるようにカスタマイズしました。
完成形イメージ図は寝ログさんの記事をご覧ください。
スマホかどうかの条件分岐はNaifixさんの記事を参考にさせていただきました。
(モバイルかどうか判定する関数はWordPressデフォルト関数であるのですが、タブレットも含まれてしまうため。今回はタブレットはPCと同じ表示にするようにします。)
PHPが全く分からない方でも安心! コピペでOKです!
H2見出し前に広告を自動挿入するカスタマイズ方法
下記二つのコードを外観 > テーマの編集 > 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番目を全て同じアドセンスコードを使うと、どこでクリックが発生したのか分析することができなくなってしまいます。
そのため全て別々のコードを作成することをおすすめします。
モバイル用も別に作成するとなると合計6つの広告ユニットが必要となります。
広告を並べたい場合はこちらのカスタマイズ記事をどうぞ。
ディスカッション
コメント一覧
とても参考になりました。
質問なんですが、4つ目の広告以降も指定した場合
追加するのは下記のみでよろしいでしょうか?
//4つ目の広告タグを挿入(モバイル表示用)
$ad4_mobile = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
4つ目を追加するにはこうなります。
動作確認してませんが、恐らく大丈夫なはず…。
// ***********************************************************************************
// 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;
//4つ目の広告タグを挿入(PC表示用)
$ad4_pc = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//1つ目の広告タグを挿入(モバイル表示用)
$ad1_mobile = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//2つ目の広告タグを挿入(モバイル表示用)
$ad2_mobile = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//3つ目の広告タグを挿入(モバイル表示用)
$ad3_mobile = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//4つ目の広告タグを挿入(モバイル表示用)
$ad4_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);
}
if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][3], $ad4_pc.$h2s[0][3], $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);
}
if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][3], $ad4_mobile.$h2s[0][3], $the_content);
}
}
}
}
return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');
早速ありがとうございます!!
if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][3], $ad4_pc.$h2s[0][3], $the_content);
も追加する必要があるんですね。
ご丁寧にどうもありがとうございましたm(_ _)m
やってみたけどエラー出ました。難しいですね
もしわかったらご教授頂けますでしょうか。
見出し12個まで設定したのですが、
エラーはでないのですが、広告やテキストが出てきません。
下記の何が問題かわかりますでしょうか。
※広告は「あああああ」にしてます。
————————–
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;
//4つ目の広告タグを挿入(PC表示用)
$ad4_PC = <<< EOF
ああああああああああああ
EOF;
//5つ目の広告タグを挿入(PC表示用)
$ad5_PC = <<< EOF
ああああああああああああ
EOF;
//6つ目の広告タグを挿入(PC表示用)
$ad6_PC = <<< EOF
ああああああああああああ
EOF;
//7つ目の広告タグを挿入(PC表示用)
$ad7_PC = <<< EOF
ああああああああああああ
EOF;
//8つ目の広告タグを挿入(PC表示用)
$ad8_PC = <<< EOF
ああああああああああああ
EOF;
//9つ目の広告タグを挿入(PC表示用)
$ad9_PC = <<< EOF
ああああああああああああ
EOF;
//10つ目の広告タグを挿入(PC表示用)
$ad10_PC = <<< EOF
ああああああああああああ
EOF;
//11つ目の広告タグを挿入(PC表示用)
$ad11_PC = <<< EOF
ああああああああああああ
EOF;
//12つ目の広告タグを挿入(PC表示用)
$ad12_PC = <<< EOF
ああああああああああああ
EOF;
//1つ目の広告タグを挿入(モバイル表示用)
$ad1_mobile = <<< EOF
EOF;
//2つ目の広告タグを挿入(モバイル表示用)
$ad2_mobile = <<< EOF
EOF;
//3つ目の広告タグを挿入(モバイル表示用)
$ad3_mobile = <<< EOF
ああああああああああああ
EOF;
//4つ目の広告タグを挿入(モバイル表示用)
$ad4_mobile = <<< EOF
ああああああああああああ
EOF;
//5つ目の広告タグを挿入(モバイル表示用)
$ad5_mobile = <<< EOF
ああああああああああああ
EOF;
//6つ目の広告タグを挿入(モバイル表示用)
$ad6_mobile = <<< EOF
ああああああああああああ
EOF;
//7つ目の広告タグを挿入(モバイル表示用)
$ad7_mobile = <<< EOF
ああああああああああああ
EOF;
//8つ目の広告タグを挿入(モバイル表示用)
$ad8_mobile = <<< EOF
ああああああああああああ
EOF;
//9つ目の広告タグを挿入(モバイル表示用)
$ad9_mobile = <<< EOF
ああああああああああああ
EOF;
//10つ目の広告タグを挿入(モバイル表示用)
$ad10_mobile = <<< EOF
ああああああああああああ
EOF;
//11つ目の広告タグを挿入(モバイル表示用)
$ad11_mobile = <<< EOF
ああああああああああああ
EOF;
//12つ目の広告タグを挿入(モバイル表示用)
$ad12_mobile = <<< EOF
ああああああああああああ
EOF;
if ( is_single() && !is_mobile() ) {//投稿ページ(PC)
$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);
}
if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][3], $ad4_pc.$h2s[0][3], $the_content);
}
if ( $h2s[0][4] ) {//5番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][4], $ad5_pc.$h2s[0][4], $the_content);
}
if ( $h2s[0][5] ) {//6番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][5], $ad6_pc.$h2s[0][5], $the_content);
}
if ( $h2s[0][6] ) {//7番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][6], $ad7_pc.$h2s[0][6], $the_content);
}
if ( $h2s[0][7] ) {//8番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][7], $ad8_pc.$h2s[0][7], $the_content);
}
if ( $h2s[0][8] ) {//9番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][8], $ad9_pc.$h2s[0][8], $the_content);
}
if ( $h2s[0][9] ) {//10番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][9], $ad10_pc.$h2s[0][9], $the_content);
}
if ( $h2s[0][10] ) {//11番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][10], $ad11_pc.$h2s[0][10], $the_content);
}
if ( $h2s[0][11] ) {//12番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][11], $ad12_pc.$h2s[0][11], $the_content);
}
}
}
} else if ( is_single() && is_mobile() ) {//投稿ページ(モバイル)
$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);
}
if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][3], $ad4_mobile.$h2s[0][3], $the_content);
}
if ( $h2s[0][4] ) {//5番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][4], $ad5_mobile.$h2s[0][4], $the_content);
}
if ( $h2s[0][5] ) {//6番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][5], $ad6_mobile.$h2s[0][5], $the_content);
}
if ( $h2s[0][6] ) {//7番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][6], $ad7_mobile.$h2s[0][6], $the_content);
}
if ( $h2s[0][7] ) {//8番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][7], $ad8_mobile.$h2s[0][7], $the_content);
}
if ( $h2s[0][8] ) {//9番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][8], $ad9_mobile.$h2s[0][8], $the_content);
}
if ( $h2s[0][9] ) {//10番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][9], $ad10_mobile.$h2s[0][9], $the_content);
}
if ( $h2s[0][10] ) {//11番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][10], $ad11_mobile.$h2s[0][10], $the_content);
}
if ( $h2s[0][11] ) {//12番目のH2見出し手前に広告を挿入
$the_content = str_replace($h2s[0][11], $ad12_mobile.$h2s[0][11], $the_content);
}
}
}
}
return $the_content;
}
add_filter(‘the_content’,’add_ad_before_h2_for_3times’);
むむむ…そうしましたら
add_filter('the_content','add_ad_before_h2_for_3times');
を
add_filter('the_content','add_ad_before_h2_for_3times', 11);
にしてみると、もしかしたら出てくるかもしれません。(優先順位をデフォルトの10から1つ上げて11にしてます)
出てこなかったら11を99にしてみるとこれまた出てくるかもしれません…曖昧でごめんなさい。
ありがとうございます!
やってみます。色々とご教授頂きありがとうございましたm(_ _)m