
以前、AdSense広告の表示可能ユニット数は3つまででした。
それが、2016年8月頃から、広告ユニット数の上限は廃止されました。
以前は、こんな規約だったのが、
1 ページに配置可能な広告の上限
現在、AdSense で 1 ページに配置可能なコンテンツ向け AdSense ユニット、リンクユニット、検索ボックスの上限はそれぞれ次のとおりです。
コンテンツ向け AdSense ユニットは 3 つまで
リンクユニットは 3 つまで
検索ボックスは 2 つまで
こんな感じに書き換えられました。
広告や有料の宣伝用資料は、配信するページのコンテンツよりも多くなってはならないものとします。また、コンテンツは、ページを訪れるユーザーの関心に合った、価値ある情報を提供するものでなければなりません。そのため、ユーザーにとって価値がほとんどないページでの広告配信と広告の過度な表示は、修正が行われるまで制限または無効にされる場合があります。
参考 広告の配置に関するポリシー – AdSense ヘルプ
これにより、コンテンツ量に見合った広告数であれば、自由に広告を貼り付けられるようになりました。
その後、投稿本文中に何個も広告を表示させているWordpressサイトもかなり見かけるようになってきました。おそらく「本文中でもコンテンツ量に応じて適切に広告を表示したい」という需要が出てきたのだと思います。
そういった需要もあってか、先日フォーラムの方にも以下のような書き込みがありました。
アドセンスコードを各記事別に自分の入れたい場所に挿入できる機能を希望します。
アドセンスコードを各記事のHTMLに直接貼り付けることも不可能ではありませんが、そうするとスマホとPCで別の広告を表示するという事が出来なくなってしまいます。
可能であれば、記事内にショートコードを挿入することでスマホにはスマホ用のアドセンスコード、PCにはPC用のアドセンスコード、が自動的に挿入できるような機能を追加していただきたいです。
確かに「本文中自由に広告を表示したい場合」は、こういった機能があると便利そうなので、試しにコードを書いてみました。
目次
主な手順

上記のような機能を実装する主な手順としては、以下のようになります。
- functions.phpにショートコードを広告にするコードを書く
機能を実装するだけなら、コードをコピペして、アドセンスコードを貼り付けるだけでできます。
functions.phpにショートコードを広告にするコードを書く
機能を実装するには、以下のコードをfunctions.phpに貼り付けます。
//[ad]ショートコードに対して広告を表示する
function replace_ad_shortcode_to_advertisement_ex($the_content){
$ad_shortcode = '[ad]';
$ad_code = <<< EOF
<div>スポンサーリンク</div>
//////////////////////////////////
//ここにアドセンスタグを挿入する//
//////////////////////////////////
EOF;
$the_content = preg_replace('{^(<p>)?'.preg_quote($ad_shortcode).'(</p>)?$}m', $ad_code, $the_content);
return $the_content;
}
add_filter('the_content', 'replace_ad_shortcode_to_advertisement_ex');
その後、以下の部分にAdSenseコードを貼り付けるだけです。
////////////////////////////////// //ここにアドセンスタグを挿入する// //////////////////////////////////
その後、管理画面のエディターで本文を書く際、以下のように広告を表示したい箇所に[ad]と挿入します。
投稿後、ページを表示すると本文部分では、以下のように広告が表示されます。
パソコンとモバイルで広告を分けて表示する
パソコンとスマホなどで、広告を分けて表示させたい場合は、以下のコードをfunctions.phpに貼り付けます。
//[ad]ショートコードに対して広告を表示する
function replace_ad_shortcode_to_advertisement_ex($the_content){
$ad_shortcode = '[ad]';
$ad_code_pc = <<< EOF
<div>スポンサーリンク</div>
//////////////////////////////////
//ここにPC用のタグを挿入する //
//////////////////////////////////
EOF;
$ad_code_mobile = <<< EOF
<div>スポンサーリンク</div>
////////////////////////////////////
//ここにモバイル用のタグを挿入する//
////////////////////////////////////
EOF;
if (wp_is_mobile()) {
$ad_code = $ad_code_mobile;
} else {
$ad_code = $ad_code_pc;
}
$the_content = preg_replace('{^(<p>)?'.preg_quote($ad_shortcode).'(</p>)?$}m', $ad_code, $the_content);
return $the_content;
}
add_filter('the_content', 'replace_ad_shortcode_to_advertisement_ex');
上記コードを利用すると、パソコン表示時は、パソコン用のコードが表示されます。
モバイル端末で表示時は、モバイル用のコードが表示されます。
まとめ
こんな感じで、手軽にWordpressの投稿本文中に広告を挿入できるショートコード機能を追加できます(厳密に言うとWordpressのショートコード機能は利用していないけど)。
ただ、前述しましたがAdSenseポリシーには、以下の記述があります。
広告や有料の宣伝用資料は、配信するページのコンテンツよりも多くなってはならないものとします。
Google側が、「コンテンツに見合った広告量ではない」と判断した場合は、警告もしくは、アドセンス停止の可能性もあり得ると思うので、利用の際はAdSense プログラム ポリシーを踏まえた上でご利用ください。
大変お忙しい中失礼致します!
ここで紹介して頂いたソースコードはGooleアドセンスだけ使えるのでしょうか?
それとも他の広告でも使えるものなのでしょうか?
一応他の広告で試してはみたのですが反映されなかったので質問させて頂きました。
宜しくお願いします。