Google Adsense広告を記事中のX番目の見出しの前に自動で挿入【ワードプレス】
ブログやサイトの記事中の広告ってなかなか良いですよね。さほど邪魔になりませんし、自然に目に飛び込んできます。私も記事中に広告ユニットを設置したかったのですが、自動で挿入するコードを考えるのが面倒で後回しにしてきました。ちなみに楽をしようとしてGoogle Adsenseの自動広告も試してみましたが、FIXで固定してあるヘッダーメニューの上に画面幅いっぱいの巨大広告を挿入されて諦めました。。。
という事で今回は、ワードプレスの記事本文中にグーグルアドセンスの広告ユニットを自動で挿入してみようと思います。あらかじめ設定した2番目・3番目などの任意の見出しの前に広告が表示されるようにします。
~ 目次 ~
コードの仕組み
一応、カンタンに仕組みだけ書いておきます。どうでもいい方は読み飛ばして下さい。
まず、指定した見出しの頭の部分で本文を分割して、指定した箇所に広告コードを挟み込みながら本文を組み立てなおします。
大して重いコードは書いていないので、ただでさえ遅いアドセンス広告が更に遅くなったりはしないはずです。
好きな見出しタグの前にアドセンス広告ユニットを挿入するコード
まず、下のコードをコピーして、使用中のWordPressテーマのfunctions.phpに貼り付けます。(広告コードが空なので、まだ表示はされません)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
function ads_unit($content){ if(!is_single()){ return $content; }else{ /* 設定 */ $adsCode=<<<EOC <!-- Adsense Code Start --> <!-- Adsense Code End --> EOC; $dmt='<h2'; $pos=array(4); /* 設定END 以降は変更しない! */ $content = preg_replace('/<!--[\s\S]*?-->/s', '', $content); $paragraphs=explode($dmt,$content); foreach($paragraphs as $pg){ if($c>=1){ if(in_array($c,$pos)){ $customContent.=$adsCode.$dmt.$pg; }else{ $customContent.=$dmt.$pg; } }else{ $customContent.=$pg; } $c++; } return $customContent; } } add_filter('the_content','ads_unit'); |
※2019-01-08 16:45:18 修正
レアなケースですが、HTMLソース中のコメントアウト内に数える対象の見出しが記述されているケースに対応するため、14行目でコメントアウトを削除するように変更しました。コメントアウトが重要という場合や、コメントアウト内で見出しタグを記述する事がない場合は、この行は削除しても問題ありません。
コード内の設定項目
貼り付けたコードに以下の設定項目を入力すれば、好きな見出しタグの前に広告ユニットが挿入されます。
$adsCode(広告ユニットのコード)
Adsense Code Startと書かれた行とAdsense Code Endと書かれた行の間に、Google Adsenseでコピーした広告ユニットのコードを貼り付けます。
1 2 3 4 5 6 7 8 |
$adsCode=<<<EOC <!-- Adsense Code Start --> <script> ~~~~~ ~~~~~ </script> <!-- Adsense Code End --> EOC; |
上のようになればOKです。基本的にこれだけで、記事内の4番目のh2の上に広告が挿入されますが、何番目かを変えたい場合などは、他の設定も変更して下さい。
$dmt(基準にする見出し)
WordPressの記事本文中で使用する見出しといえば、メインはh2になると思います。上のコードもh2を何番目と数える基準にしています。h3を数えて何番目のh3の上とする場合は、下のようにして変更可能です。
h3を数える場合
1 |
$dmt='<h3'; |
HTMLの閉じカッコがありませんが、間違いではありません。。。このままで大丈夫です。
$pos(何番目の見出しの前に挿入するか)
上のコードのデフォルトでは4番目の見出しの前に広告を表示します。何番目にするかは、array()のカッコ内の数字を変えれば変更できます。
5番目の見出しの前に挿入
半角数字で入力します。
1 |
$pos=array(5); |
2番目と3番目と6番目の見出しの前に挿入
複数指定したい場合は半角カンマで区切って入力します。数字も必ず半角です。
1 |
$pos=array(2,3,6); |
最後に
無事に記事中のいい感じの場所に広告が表示されましたか?
記事中の1つ目・2つ目のように、細かいデータを取るために広告ユニットを分ける場合もあるかもしれません。複数の違う広告ユニットを挿入するには、関数の名前を変えて複数回実行するか、カスタマイズを加える事が必要です。私の場合、記事中の広告は1つだけで良かったので。。。ご了承下さい。
なお、サイト状況によって広告が正常に表示されるまで時間がかかる場合があります。HTMLソース上で正常に広告コードが挿入されていれば、そのまま少し様子を見て下さい。