WordPressで記事中の見出し直前にアドセンスを挿入する方法

更新

2015-10-19_0716アドセンスを記事中に設置すると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」と「スマホ」とを区別する関数を自作する必要があります。

アドセンスコード以外の広告や定型文にも応用可能

記事中にアドセンスを挿入するコードを紹介していきましたが、もちろん他の広告コードや定型文を挿入することも出来ます。

  • 記事中へのアフィリエイト広告挿入
  • 記事中でのイベントの告知
  • 記事中での人気記事リスト告知

などなど、コードの使い道は意外に広いです。

moreタグや最初のh2タグ付近に埋め込めれば十分という方には次の記事がオススメです。

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を異なるものとすることもできます。こちらの方が、アドセンスの成果計測がし易くなりますね。

WordPressで記事中の見出し直前にアドセンスを挿入する方法」への9件のフィードバック

  1. カズ

    はじめまして!カズと申します。
    ウェブシュフさんの記事はわかりやすく非常に参考になります。

    h2タグの直前にアドセンスを埋め込むコードを使わせていただいたのですが、複数の箇所に複数の広告を貼り付けるようにすることは可能でしょうか?

    例えば1番目のh2タグにはアドセンス1を。
    2番目のh2タグにはアドセンス2をといった具合です。

    このコードを複数functionPHPに貼ると、エラーが出てしまい困っています。
    お忙しいとは思いますがよろしくお願いいたします。

    返信
  2. ウェブシュフ 投稿作成者

    カズさん、始めまして。コメントありがとうございます。

    私は、the content内には広告を入れても一つまでと決めているので、複数広告を入れるためのコードは、正確には分かりません。

    それゆえ責任は全く持てませんが、脳内のアイデアを一つ。

    2つ目のアドセンスを挿入する為のコードは

    1. my_insert_ads_into_posts関数を定義している下記部分をコピペ


    add_filter( 'the_content', 'my_insert_ads_into_posts' );
    function my_insert_ads_into_posts( $content ) {
    global $my_menu_name;
    if(is_single()){
    $my_ad_code = '(ここにアドセンスコードを代入)';
    if (!is_admin() ) {
    return my_insert_before( $content,2, '<h2' , $my_ad_code );
    }
    return $content;
    }
    else
    {
    return $content;
    }
    }

    2. 関数名my_insert_ads_into_posts を任意の別のstringに変更
    3. return my_insert_before( $content,2, ‘<h2’ , $my_ad_code );を適宜カスタマイズする

    ということで作れそうな気がします。

    ただ、未検証ですので、実行時の責任は負いかねます。

    お試しの場合は、万一の場合に備えて復旧準備を万端にしてから、慎重にお願いします。m(_ _)m

    返信
  3. カズ

    お返事ありがとうございます。

    ウェブシュフさんのアイデアを参考に実験してみます。
    ありがとうございました^^

    返信
  4. ピンバック: ままはっくのGoogle AdSenseの位置を公開。コピペでOK!記事本文中にアドセンスを差し込む方法【WordPress】 - ままはっく

  5. ピンバック: プラグインを使わずにアドセンスをH2タグの上に連続して表示させる方法 | シンタロウの思考回路

  6. ぱっぽん

    いつも参考になる記事をありがとうございます。

    一つ質問させてください。

    function.phpが長くなってしまうのを避ける為、
    「$my_ad_code = ‘(ここにアドセンスコードを代入)’;」の広告コードを、テンプレートパーツ化してget_template_part()で呼び出そうと思ったのですが、広告が記事の一番上に表示され、うまく機能しなくなってしまいました。

    なにか対策方法はありませんでしょうか??

    返信
    1. ウェブシュフ 投稿作成者

      ばっぽんさん、コメントありがとうございます。

      ばっぽんさんご指摘のように、記事で紹介したコードだと、確かにfunction.phpが長くなってしまいます。

      しかし、大した不都合を感じないため、他の方策に取り組んでおりません。

      広告コードをテンプレートパーツ化したこともないので、お求めの対策方法はわかりかねます。

      お役に立てずすいません。

      今後ともよろしくお願いいたします。

      返信
  7. ピンバック: 収益増!Googleアドセンスのクリック率を上げる配置と設置方法 | 聴覚障害を持ちながらもブログで月10万円の収入を得るダンのブログ

  8. ピンバック: 1年で40万PVを達成した私なりのまとめ | ズボンのチャックが開いてますよ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です