Google AdSenseをWordpressの本文中に表示するにはいろいろな方法があります。
主な方法は以下の4つ。
- HTMLタグをコピーして貼り付ける
- moreタグ<!–more–>を置換する
- プラグインを使用して挿入する
- functions.phpでショートコードを設定し挿入する
ただこれらの方法は、プラグインを使用したり、記事(投稿)を作成するたびに、タグやショートコードを挿入する必要があります。ほんのちょっとした手間なんですが、毎回毎回となると、降り積もって、ちょっと面倒くさいです。
その面倒くささから解放されるため以前、以下の記事を書きました。
ただこの方法、関数の中にヒアドキュメントを使用したせいで、使用した人の中には、ヒアドキュメントの仕様に合わずエラーが出てしまうこともありました。
それに、もう少し簡潔に書ける部分もいくつか見受けられます。
ということで、以前書いた「H2見出し手前にアドセンス広告を配置する方法」を、もっと手軽でスッキリスマートに書けるように改良してみました。
ここに書かれている方法を使用すれば、4回ぐらいのコピペで本文中アドセンスを実装できます。
※この方法は、投稿本文中にH2見出しを使っていなければ、ほとんど意味のない設定になります。
追記:今回の方法より簡単な方法を考えてみました。
photo by Dennis Chen
目次
本文中広告のテンプレート作成
まずは、前回ヒアドキュメントに貼っていたアドセンスタグを、簡単に貼れるようテンプレートを作って、そこに貼ることにします。
今回は、ad-in-body.phpというファイルをテーマフォルダ内(子テーマフォルダ内)に作成します。
その中にGoogle AdSenseで取得したアドセンスタグを貼り付けます。
簡単な例を書くと、こんな感じになります。一応アドセンスが推奨している広告ラベルも入れています。(アドセンスタグだけを貼り付けてもOKだけど、余白はしっかり取る必要があり)
<div class="ad-space"> <div class="ad-label">スポンサーリンク</div> <div class="ad-pc">[アドセンスタグ]</div> <div class="clear"></div> </div>
この[アドセンスタグ]部分にアドセンスで取得したタグを貼り付けます。
functions.phpの編集
テーマの(子テーマの)functions.phpに、以下のようにコピペします。
//H2見出しを判別する正規表現を定数にする define('H2_REG', '/<h2.*?>/i');//H2見出しのパターン //本文中にH2見出しが最初に含まれている箇所を返す(含まれない場合はnullを返す) //H3-H6しか使っていない場合は、h2部分を変更してください function get_h2_included_in_body( $the_content ){ if ( preg_match( H2_REG, $the_content, $h2results )) {//H2見出しが本文中にあるかどうか return $h2results[0]; } } function add_ads_before_1st_h2($the_content) { if ( is_single() ) {//固定ページも表示する場合はis_singular()にする //広告(AdSense)タグを記入 ob_start();//バッファリング get_template_part('ad-in-body');//広告貼り付け用に作成したテンプレート $ad_template = ob_get_clean(); $h2result = get_h2_included_in_body( $the_content );//本文にH2タグが含まれていれば取得 if ( $h2result ) {//H2見出しが本文中にある場合のみ //最初のH2の手前に広告を挿入(最初のH2を置換) $the_content = preg_replace(H2_REG, $ad_template.$h2result, $the_content, 1); } } return $the_content; } add_filter('the_content','add_ads_before_1st_h2');
ポイントとなるところは、まず、H2を判別する正規表現は2回以上使用するので最初に定数化しています。
あと、本文中にH2タグが含まれていれば、その部分を返すget_h2_included_in_body()関数も2回以上使用するのでまとめました。
H2見出し手前にアドセンスを追加するのは、add_ads_before_1st_h2()関数です。functions.phpないでテンプレートファイル呼び出すには、以下のようにバファリングを使用します。
ob_start();//バッファリング get_template_part('ad-in-body');//広告貼り付け用に作成したテンプレート $ad_template = ob_get_clean();
これで、使い方のややこしいヒアドキュメントを使う必要が無くなりました。
Simplicityテーマを使用している場合は、元からこの機能がカスタマイズから選べるように備わっています。ですので、この方法を行うと関数名が衝突してエラーが出ます。エラーを回避して子テーマから更なるカスタマイズをする場合は、Simplicityの本文中広告をダブルレクタングルにするカスタマイズ方法を参照してください。
今回は、説明を簡潔にするためPC表示のみの方法を書きましたが、モバイルに対応するには、以下のようにif分岐で呼び出すテンプレートを変更すると良いと思います。
ob_start();//バッファリング if ( wp_is_mobile() ) { get_template_part('ad-mobile-in-body');//モバイル広告用テンプレート } else { get_template_part('ad-in-body');//PC広告用テンプレート } $ad_template = ob_get_clean();
本文中にH2タグが含まれていないページでも表示
WordPressの全ての投稿にH2タグが入っていれば、この方法は必要ないです。
けれど、全てのページにH2タグが入っていない場合は、タグが入っていないページだけ広告が1つ少なく表示されることになります。
これだともったいないので、広告を表示したい箇所に以下のように記入すると、本文中にH2タグが含まれてないときだけ表示されるアドセンス部分が作成されます。
<?php if ( !get_h2_included_in_body( get_the_content() ) ): //本文中にH2見出しがない場合 get_template_part('ad-in-body'); php endif; ?>
これで先程、functions.phpで作成した関数get_h2_included_in_body()が活きてきます。
僕の場合は、single.phpなどの関連記事下にこのコードを挿入しています。サイドバーのどこかとかでもいいかもしれません。
これで、H2タグが入っていないページの取りこぼしを防ぐことができるようになりました。
動作確認
ちゃんと動作されているか確認します。
ブラウザ拡張の「アドブロック(Adblock)」などが動作していると、表示されなくなるのでブロック機能を停止してください。
広告を貼り付けると、このようになります。
効果
当サイトの場合、本文にアドセンスを表示する前は、関連記事下に広告を表示させていました。
それで、「関連記事下広告」と「本文中広告」の効果を計測した結果、RPMで3.8%増という結果が出ました。
インプレッション収益(RPM)は、表示回数 1,000 回あたりの見積もり収益額を表します。
1000表示あたりの効果が、3.8%と微増だったので、その後2週間ほど一旦は関連記事下広告に戻したのですが、その期間はRPMが10%も下がってしまったので元に戻しました。
で、この記事を書いたことを機に、現在の効果を再度確かめてみると、「関連記事下広告をしていた30日間(5月21~6月19)」と「本文中広告をしていた直近30日間(7月31~8月29)」を比べてみると収益的には2倍ぐらいになっていました。
上が最近のもの。
ただこれは、以前よりアクセスが増えたからこのようになっている部分もあります。
で、やはりここは、RPMで比較すると、「本文中広告をしていた直近30日間」の方が13%パフォーマンスが高くなっていました。
これは、RPMが300円だったとすると、339円になる数字です。もし月1万円の収益があるサイトだと、広告のページビュー数が同じなら1万1300円となります。これだけ効果が出れば、成功と言っていいのではないでしょうか。
※これはあくまで、当サイトのデータから来る結果です。サイトによっては、効果が上がらない場合があるということもありえます。また、AdSense等の広告を記事中に挿入すると、Googleから低品質と思われやすくなるという意見もありますので、実装は自己責任でお願いします。
まとめ
この方法は、効果がうまく上がらなければ、2ヶ所コメントアウトすれば元に戻せるのが一番良いところです。
具体的には以下のようにします。
functions.phpの以下の部分をコメントアウトする。
//add_filter('the_content','add_ads_before_1st_h2');
取りこぼしを防ぐために挿入したコードのテンプレート呼び出し部分をコメントアウトする。
<?php if ( !get_h2_included_in_body( get_the_content() ) ): //本文中にH2見出しがない場合 //get_template_part('ad-in-body'); php endif; ?>
本文中広告のパフォーマンスはさておき、
- もしダメなようなら手軽に戻せる
- ad-in-body.phpテンプレートをダブルレクタングルにしてみたり、いろいろな表示方法を試して本文中広告の効果を手軽に測定できる
という点において、かなり楽な方法なのではないかと思います。
こんばんは
わいひら様
はじめまして たかよしと申す者です。
このブログを観て解説通りカスタマイズしたら、h2見出しの前にアドセンス広告を表示出来たのですが、「本文中にH2タグが含まれていないページでも表示」で解説していたコードを、「広告を表示したい箇所に以下のように記入すると、本文中にH2タグが含まれてないときだけ表示されるアドセンス部分が作成されます。」と説明されていたので
最初は子テーマ内の「single.php」内の元々アドセンスコードが記述されていた場所(記事内に広告を表示させるため、記事トップの広告コードを削除)に追記しました。
「ファイル更新」をクリックしたら画面が真っ白?変だ。何回かやって一様更新ができたが、肝心のコードが実行されていないようです。
h2見出しタグが無い記事では記事トップに広告を表示するはずですよね?
念のため子テーマに記述したコードを削除して、すべてのコードを親に記述しなおしても結果は、おかしな挙動はなかったですが記事トップに広告は表示されませんでした。
なんかコードがおかしいのかな?(感にさわったらゴメンナサイ)
尚 試したブログは編集用として
bitnami wordpress でローカルホストでのワードプレス
ワードプレスバージョンは ver 392
テーマは gush2
以上が出来ない現状です。
H2タグが含まれてないときだけ表示されるアドセンス広告を、どうしても記事トップに表示させたいです。
このやり方で解決方法はありますでしょうか?
ヨロシクお願いいたします。
それともう一つ
子テーマに記述した際におかしな挙動現象が起きましたが、これは子テーマの作成の仕方が悪いのでしょうか?
ファイルを保存する時の「文字コード」は「UTF-8N」・「改行コード」は「LF」で良いですよね。あるブログに書いていたので、スタイルシートおよびPHPファイルも上記コードで保存しています。
gush2のスタイルシートに「@charset “UTF-8”;」と書いてあるので気になっていた。
ご教授おねがいいたします。