1年ほど前、最初のH2見出し手前に広告を表示する方法を考えてみました。
この方法は、現在自分のテーマでも利用しています。
ただ先日、フォーラムの方に「1番目と2番目と3番目のH2タグ手前にアドセンスを入れたい」という要望がありました。テーマの方では、自分の考えと他の機能との兼ね合いもあって機能追加はしませんでしたが、実装方法には、興味があったので、コピペで手軽にできるカスタマイズ方法を考えてみました。
photo by Kristina Alexanderson
目次
完成形
今回の、カスタマイズをWordpressテーマ(子テーマ)に施すことによって、本文中に以下のような広告を挿入できるようになります。
投稿を本文中に現れる、最初3つH2見出し手前だけに広告を表示します。
基本的にコピペ一発で、カスタマイズできて、あとは広告タグを挿入するだけにしたいと思います。
このカスタマイズを行う前に注意点があります。本文中広告のように、本文の中に広告が入ることは、あまり快く思わない方も一定数おられるかと思います。その本文中広告が、本文中に3つも入ると、「邪魔すぎる」と思われる方もいるかと思うので、カスタマイズする場合は、そういったことを踏まえてご利用ください。
カスタマイズ方法
カスタマイズ方法は、以下をfunctions.phpに貼り付けるだけです。
function add_ad_before_h2_for_3times($the_content) { //広告(AdSense)タグを記入 $ad = <<< EOF ////////////////////////// //ここにアドセンスを挿入// ////////////////////////// EOF; if ( is_single() ) {//投稿ページ $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], $ad.$h2s[0][0], $the_content); } if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][1], $ad.$h2s[0][1], $the_content); } if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][2], $ad.$h2s[0][2], $the_content); } } } } return $the_content; } add_filter('the_content','add_ad_before_h2_for_3times');
あとは、「ここにアドセンスを挿入」と書かれている部分をアドセンスタグに変更するだけです。
実際には以下のように表示されます。
最初3つのH2見出し手前に広告が表示され、それ以降の見出しには表示されていないのがわかります。
それぞれの広告タグを分ける場合
アドセンスの、カスタムチャネルを利用している場合は、パフォーマンスを計測するために、アドセンスタグを分けたい場合もあると思います。
そういった時用に、タグを分けられるコードも載せておきます。
function add_ad_before_h2_for_3times($the_content) { //1つ目の広告タグを挿入 $ad1 = <<< EOF ////////////////////////// //ここにアドセンスを挿入// ////////////////////////// EOF; //2つ目の広告タグを挿入 $ad2 = <<< EOF ////////////////////////// //ここにアドセンスを挿入// ////////////////////////// EOF; //3つ目の広告タグを挿入 $ad3 = <<< EOF ////////////////////////// //ここにアドセンスを挿入// ////////////////////////// EOF; if ( is_single() ) {//投稿ページ $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.$h2s[0][0], $the_content); } if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][1], $ad2.$h2s[0][1], $the_content); } if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][2], $ad3.$h2s[0][2], $the_content); } } } } return $the_content; } add_filter('the_content','add_ad_before_h2_for_3times');
「ここにアドセンスを挿入」と書かれた部分に、それぞれタグを入力してください。
以下のように、異なる広告タグがセットされます。
注意点
今一度注意点です。
アドセンスポリシー上は、以下の点に注意してください。
- 本文中広告には「スポンサーリンク」のようなラベルを入れる
- 本文部分が短かすぎるとモバイル画面で2つ広告が表示されるかもしれないので注意
あと本文中のH2見出しですが、以下のような書き方の時は有効ですが、
本文 <h2>見出し</h2> 本文
以下のような書き方では、見出しと判断しないようにしています。(同名見出しがあった時の不具合対策として)
本文<h2>見出し</h2>本文
ただ、Wordpressエディターは上のような書き方はしないので、わざとそのような書き方にでもしない限りは、広告が表示されないなんてことはめったにない思います。
まとめ
というわけで、広告を全て本文中に入れる方法を紹介しました。
「とにかく本文中広告はパフォーマンスが良いので全て本文中に表示したい」なんて人にはいいかもしれません。
あと最後に、もう一度書きますが、本文中広告は邪魔と思われる方もおられますので、そこらへんは各自の広告ポリシーと照らし合わせて利用するか判断してください。
Googleいわく「タップされたモバイル広告のうち半数は意図せずタップされたもの」といったようなケースもあり、訪問ユーザーの利便性を損なう可能性もありますので、ご利用は計画的に。
こんばんは。フォーラムで質問したものです。
テスト用のサイトから他のサイトに移植しようとしたら、アドセンスが表示されなくなりました。
原因は調べたらわかりました。
PS Disable Auto Formatting
という整形プラグインです。改行の問題がありこのプラグインを使っています。。
「見出しのパターン」のところを修正すればいいと思うのですが、、
正規表現に疎くいまいち改善できません。。
h2を認識させるよい方法はないものでしょうか?
たびたび申し訳ございませんが、ご助言いただけると大変助かります。