アドセンスを記事中に設置するとSEO的にはたとえ僅かでもマイナスだ…と信じて疑わない@web_shufuです。しかし、このたび敢えてアドセンスを記事内に設置する決心をしました。
記事中で「N番目に出現する見出しタグの直前」にアドセンスを埋め込みたかったのですが、手頃なプラグインがありませんでした。そのままコピペ出来るコードを紹介している記事も見当たりませんでした。そこで自分でfunction.phpにコードを書きました。
2番目のh2タグの直前にアドセンスを挿入するコード
色々突っ込みどころは満載でしょうが、動作確認の結果、自分の求めていたものは出来たようです。
例えば、記事内に出てくる2番目の<h2>
タグの直前にアドセンスを挿入するPHPコードは以下のようになります。
function my_insert_after( $my_content , $my_ikutume, $my_kugiri, $my_insert ) {
$kugirare_parts = explode( $my_kugiri, $my_content );
foreach ($kugirare_parts as $index => $kugirare_part) {
if ( trim( $kugirare_part )) {
$kugirare_parts[$index] .= $my_kugiri;
}
if ( $my_ikutume == $index+1) {
$kugirare_parts[$index] .= $my_insert;
}
}
return implode( '', $kugirare_parts );
}
function my_insert_before( $my_content , $my_ikutume, $my_kugiri, $my_insert ) {
$kugirare_parts = explode( $my_kugiri, $my_content );
foreach ($kugirare_parts as $index => $kugirare_part) {
if ( trim( $kugirare_part )&& $index!=0) {
$kugirare_parts[$index] = $my_kugiri.$kugirare_parts[$index];
}
if ( $my_ikutume == $index && count($kugirare_parts)>$my_ikutume+1) {
$kugirare_parts[$index] = $my_insert.$kugirare_parts[$index];
}
}
return implode( '', $kugirare_parts );
}
add_filter( 'the_content', 'my_insert_ads_into_posts' );
function my_insert_ads_into_posts( $content )
{
if(is_single())
{
$my_ad_code = '(ここにアドセンスコードを代入)';
}
else
{
$my_ad_code = '';
}
if (!is_admin() )
{
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content,2, '<h2' , $my_ad_code );
}
return $content;
}
特に
//この部分がアドセンスの挿入の仕方を決める重要な部分
content= my_insert_before( $content, 2, '<h2' , $my_ad_code );
はアドセンスの挿入の仕方を決めている部分でとても重要です。
ここを書き換えれば自由自在に埋め込み方を変えられます。
N番目の見出し・段落の直前にコードを埋め込む命令の雛形と例
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content, n, 'HTMLタグ' , $my_ad_code );
と書くと、
「$content(投稿本文)中のn番目に出てくる’HTMLタグ’のbefore(直前)に$my_ad_code(挿入したい文字列)を入れなさい」という命令になります。
例えば以下のように書き換えると
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content, 5, '<p>' , $my_ad_code );
「$content(投稿本文)中の5番目に出てくる’<p>
‘のbefore(直前)に$my_ad_code(挿入したい文字列)を入れなさい」という命令になります。
N番目の見出し・段落の直後にコードを埋め込む命令の雛形と例
beforeをafterに変えて
$content= my_insert_after( $content, n, '$html_tag' , $my_ad_code );
とすると、「$content(投稿本文)中のn番目に出てくる$html_tagのafter (直後)に$my_ad_code(挿入したい文字列)を入れなさい」という命令になります。
例えば、以下のように書き換えると
$content= my_insert_before( $content, 8, '</p>' , $my_ad_code );
「$content(投稿本文)中の8番目に出てくる’</p>
‘のafter (直後)に$my_ad_code(挿入したい文字列)を入れなさい」という命令になります。
モバイルとPCでの広告出し分けも自由自在
記事中にアドセンスを入れる場合、規約との関係上、「モバイルではアドセンスを記事中に挿入するが、PC閲覧では挿入しない」等のデバイスによる表示切替を行うケースがあります。
実は冒頭に貼り付けた「2番目の見出しタグの直前にアドセンスを埋め込むコード」では、
if (!is_admin() )
{
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content,2, '<h2' , $my_ad_code );
}
のif (!is_admin() )
をif (!is_admin()&&wp_is_mobile() )
に書き換えて
if (!is_admin()&&wp_is_mobile() )
{
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content,2, '<h2' , $my_ad_code );
}
とするだけで、「モバイル(スマホ・タブレット)ではアドセンスを記事中に挿入するが、PCでは挿入しない」命令になります。
「スマホでの閲覧時にはアドセンスを記事中に挿入するが、PCやタブレットでの閲覧時には挿入しない」という命令にしたいなら、wp_is_mobile()ではなく、「タブレット・PC」と「スマホ」とを区別する関数を自作する必要があります。
[img-link url=”https://webshufu.com/wp-is-mobile/” title=”WordPressのスマホ対応に使える!!PCとの表示振り分け関数・プラグイン”]
アドセンスコード以外の広告や定型文にも応用可能
記事中にアドセンスを挿入するコードを紹介していきましたが、もちろん他の広告コードや定型文を挿入することも出来ます。
- 記事中へのアフィリエイト広告挿入
- 記事中でのイベントの告知
- 記事中での人気記事リスト告知
などなど、コードの使い道は意外に広いです。
moreタグや最初のh2タグ付近に埋め込めれば十分という方には次の記事がオススメです。
- WordPress記事本文中にアドセンスを表示する方法6パターン
- 記事内にAdsense等の広告を配置する方法*prasm
- ブログのアドセンス収益を1.3倍アップさせる方法。広告サイズとスマホを意識した配置がポイント!
- アドセンスをWordpress記事本文中に配置できる手軽でスマートな方法
2015/10/18追記:記事中の二箇所以上にアドセンスを挿入するコード
ここまで紹介したコードでは「//この部分がアドセンスの挿入の仕方を決める重要な部分」の直下にある$content=…
は1行でした。
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_…( $content, n, 'HTMLタグ' , $my_ad_code );
実は、$content=…
を2行にすると、記事中の二箇所にアドセンスを挿入することができます。
現在私が行っているように、最初と3番目の<h2>
タグ直前にアドセンスを挿入するなら、以下のようにします。
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content,1, '<h2' , $my_ad_code );
$content= my_insert_before( $content,3, '<h2' , $my_ad_code );
また、以下のようにしても、最初の<h2>
タグの直前と3番目の<h2>
タグの直前にアドセンスを挿入することができます。
function my_insert_after( $my_content , $my_ikutume, $my_kugiri, $my_insert ) {
$kugirare_parts = explode( $my_kugiri, $my_content );
foreach ($kugirare_parts as $index => $kugirare_part) {
if ( trim( $kugirare_part )) {
$kugirare_parts[$index] .= $my_kugiri;
}
if ( $my_ikutume == $index+1) {
$kugirare_parts[$index] .= $my_insert;
}
}
return implode( '', $kugirare_parts );
}
function my_insert_before( $my_content , $my_ikutume, $my_kugiri, $my_insert ) {
$kugirare_parts = explode( $my_kugiri, $my_content );
foreach ($kugirare_parts as $index => $kugirare_part) {
if ( trim( $kugirare_part )&& $index!=0) {
$kugirare_parts[$index] = $my_kugiri.$kugirare_parts[$index];
}
if ( $my_ikutume == $index && count($kugirare_parts)>$my_ikutume+1) {
$kugirare_parts[$index] = $my_insert.$kugirare_parts[$index];
}
}
return implode( '', $kugirare_parts );
add_filter( 'the_content', 'my_insert_ads_into_posts' );
function my_insert_ads_into_posts( $content )
{
if(is_single())
{
$my_ad_code = '(ここにアドセンスコードを代入)';
}
else
{
$my_ad_code = '';
}
if (!is_admin() )
{
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content,1, '<h2' , $my_ad_code );
}
return $content;
}
add_filter( 'the_content', 'my_insert_ads_into_posts_2' );
function my_insert_ads_into_posts_2( $content )
{
if(is_single())
{
$my_ad_code = '(ここにアドセンスコードを代入)';
}
else
{
$my_ad_code = '';
}
if (!is_admin() )
{
//この部分がアドセンスの挿入の仕方を決める重要な部分
$content= my_insert_before( $content,3, '<h2' , $my_ad_code );
}
return $content;
}
この場合、my_insert_ads_into_posts
関数とmy_insert_ads_into_posts_2
関数の$my_ad_code
を異なるものとすることもできます。こちらの方が、アドセンスの成果計測がし易くなりますね。