コピペ一発!WordPress本文中にウィジェットでアドセンス挿入するカスタマイズ方法

以前2度にわたり、投稿本文中のH2見出し手前に手軽にアドセンス(広告)を表示する方法を書きました。

【アドセンス収益向上】簡単!プラグインやショートコード不要でWordpress記事中に広告を挿入する方法
ブログの記事中、特にリード文あとの広告は、アドセンスの収益面からみて有効な手段だと思います。 その理由は、ページに訪れてみたもののリー...
アドセンスをWordpress記事本文中に配置できる手軽でスマートな方法
Google AdSenseをWordpressの本文中に表示するにはいろいろな方法があります。 主な方法は以下の4つ。 HTMLタグを...

ただ、これらの方法だと、PHPの編集に慣れていない人は、Wordpressのテンプレートファイルにコードを組み込むときなどの編集にに苦戦してしまうようです。

ならば、コピペ一発でテンプレートファイルの編集を終えることができ、広告などのコードを普段使い慣れたテキストウィジェットなどで貼り付けられるようにしてしまえば、特に難しいことをする必要はなく簡単にカスタマイズできるのではないかと思います。

今回は、その手軽なカスタマイズ方法を考えてみたので紹介します。

photo by Daniel Sempértegui

スポンサーリンク
レクタングル(大)広告

カスタマイズの主な手順

今回の主な手順は以下になります。

  1. functions.phpにコードを貼り付ける
  2. テキストウィジェットから広告コードを貼り付ける

やることは、たったこれだけで済みます。特に、テーマファイルの編集はコードを1回だけコピペするだけで済むので、「編集に失敗してサイトが真っ白になる率」はかなり低くなると思います。

functions.phpにコードを貼り付ける

まずは、functions.phpの1番下あたりに、以下のコードを貼り付けます。

大まかな説明は、コメントに書いてあるので参照してください。

上記のコードは、親テーマ、子テーマどちらに貼り付けても動作しますが、なるべく子テーマでカスタマイズした方が無難かと思います。

上記のコードを貼り付けると、Wordpress管理画面の「外観→ウィジェット」に以下のようなウィジェットエリアが作成されます。

ウィジェットエリアに「投稿本文中」ウィジェットが作成される

テキストウィジェットから広告コードを貼り付ける

先程作成されたウィジェットエリアに、今度はテキストウィジェットを利用してアドセンス等の広告コードを貼り付けます。

作成された「投稿本文中」ウィジェットに、ドラッグ&ドロップでテキストウィジェットを放り込みます。

投稿本文注意ジェットにテキストウィジェットを放り込む

あとは、テキストウィジェットに「ラベルとなるタイトル」と「広告用のコード」を記入し保存します。

テキストウィジェットにアドセンス等の広告を貼り付ける

ウィジェットの設定を終えると、以下のように広告が表示されるようになります。

見出し手前に広告が表示された

上記の、表示例は、Wordpressにデフォルトで入っているTwenty Fifteenをカスタマイズしてみた例です。

まとめ

今回のカスタマイズ方法の利点は、以下になります。

  • テンプレートファイルの編集はfunctions.phpに1回コピペするだけと簡単
  • 広告を貼るのにテンプレートを編集する必要がない
  • 普段使い慣れたテキストウィジェットから手軽に広告を入れ替えることができる
  • 広告に限らずとも、H2見出し手前に表示したいものを、自由に入れることができる

反面、難点を挙げるとすれば以下でしょうか。

  • ウィジェットに無作為に入れると本文とウィジェットが混在し本文の意味がぼやける

あまりむやみやたらに、ウィジェットを放り込みさえしなければ、広告のメンテナンスもしやすくなって、結構管理が楽になるのではないかと思います。

『コピペ一発!WordPress本文中にウィジェットでアドセンス挿入するカスタマイズ方法』へのコメント

  1. 名前:イクメン S 投稿日:2015/11/20(金) 16:25:38 ID:0c1d89f0a

    わいひらさん、こんにちは。

    WordPressの記事を参考にさせて頂いています、イクメン S と申します。
    いつも良質な記事、ありがとうございます。
    大変勉強になっております。

    さて、本記事でご案内頂いたコードをh3へ置き換えて、私のブログも本文に広告を追加しようとしています。が・・・。
    最後までしっかりできたと思っておりますが、うまくいきません。
    http://ayubihs.com/baby-food-must-item3/

    もしよろしければ、お助けいただけますと幸いです。

    どうぞよろしくお願いいたします。

    イクメン S

  2. わいひら 名前:わいひら 投稿日:2015/11/20(金) 19:53:50 ID:06e727877

    申し訳ないですが、どのようにカスタマイズしたか、詳細な経緯とコードがないと僕も原因はわからないです。
    外観を見るだけで、カスタマイズ内容を推測するのは厳しいです。
    テレビは改造しようとして思った動作がしなかったとして、どのような改造したのかということと、中身を見ないと原因がわからないのと同じ感じです。

  3. 名前:イクメン S 投稿日:2015/11/24(火) 13:36:22 ID:7aa6da948

    わいひらさん、こんにちは。

    お忙しい中ご返信をいただき、ありがとうございました。

    そうですね。失礼いたしました。
    自身で解決していきたいと思います。

    引き続き「寝ログ」の記事を参考にさせて頂きたいと思います。
    どうぞよろしくお願いいたします。

    イクメン S

  4. わいひら 名前:わいひら 投稿日:2015/11/24(火) 15:37:13 ID:827893e20

    こんにちは。
    お役に立てずに申し訳ないです。
    こちらこそよろしくお願いします。

  5. 名前:イクメン S 投稿日:2015/11/25(水) 21:08:57 ID:e586ec5d4

    わいひらさん、こんにちは。

    無事に本件解決できました。
    その節は失礼いたしました。

    引き続き、どうぞよろしくお願いいたします。

    イクメン S

  6. わいひら 名前:わいひら 投稿日:2015/11/25(水) 22:00:08 ID:34408b3aa

    こんにちは。
    うまくいったようでよかったです。

  7. 名前:ジョー 投稿日:2016/02/06(土) 17:22:51 ID:b4534d306

    wordpressのテーマの編集でfunctions.php内の一番下に上記のコードをそのまま記入して更新した結果サーバーエラー500が出てしまって焦りました。

    1.9.3安定版のファイルをアップロードして現在は表示してる状態ですが原因わかりませんか?

  8. わいひら 名前:わいひら 投稿日:2016/02/07(日) 19:26:53 ID:d64d1b6f1

    サイトを拝見した感じでは、Simplicityをご利用かと思います。
    エラーメッセージがわからないので確かなことはわからないですが、Simplicityでは、デフォルトでこの機能が組み込まれているので、関数名が衝突して、エラーが出るかもしれません。
    Simplicityの場合は、ウィジェット画面で、「投稿本文中」ウィジェットを利用すれば同様のことができるかと思います。

  9. 名前:名無しさん 投稿日:2016/03/10(木) 17:09:47 ID:90a9070cd

    こんにちは。
    これってアドセンスの規約違反になりませんかね?

  10. わいひら 名前:わいひら 投稿日:2016/03/10(木) 19:35:59 ID:2c49f4643

    こんにちは。

    アドセンスポリシーのどの条項に違反しますでしょうか?
    これがわからないと、どういった違反なのかがわからないのでちょっと答えるのが難しいです。

    紛らわしいみたいなことであれば、僕は「スポンサーリンク」もしくは「広告」ラベルなしに挿入すれば、違反にもなり得ると思いますが、ラベルをしっかりと記載して広告であることを明示すれば、違反にならないと思っています。
    ただ、僕もGoogleの人ではないので、100%は保証できません。アドセンスポリシーの判断については、個人にゆだねたいと思います。

  11. 名前:小松 投稿日:2016/08/29(月) 18:29:39 ID:ea5acc932

    ホントにコピペ一発ですね^-^
    記事中にアドセンスを表示したい、でも表示したくないページもある…いちいちファンクションをあまりいじりたくないというときに出会い、本当に助かりました。
    ありがとうございます!

  12. わいひら 名前:わいひら 投稿日:2016/08/29(月) 20:11:38 ID:0120098c8

    そうなんです。コピペ一発で、出来た方が楽かなと思ってコードを書いてみました。
    記事がお役に立ったようでよかったです!

  13. 名前:2001Y 投稿日:2016/09/07(水) 23:43:12 ID:2b4305bd3

    Simplicityを利用させていただいているのですが、最初のh2ではなく4っつ目のh2にも表示したいのですが、以下のコードで正しいのでしょうか。
    これでは、4つめのh2がなくても表示されてしまう気がします。

    ///////////////////////////////////////
    // 投稿本文中ウィジェットの追加
    ///////////////////////////////////////
    register_sidebars(1,
    array(
    ‘name’=>’投稿本文中2’,
    ‘id’ => ‘widget-in-article2’,
    ‘description’ => ‘投稿本文中に表示されるウイジェット。文中最初のH2タグの手前に表示されます。’,
    ‘before_widget’ => ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ));

    ///////////////////////////////////////
    //H2見出しを判別する正規表現を定数にする
    ///////////////////////////////////////
    define(‘H2_REG’, ‘//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];
    }
    }

    ///////////////////////////////////////
    // 投稿本文中の最初のH2見出し手前にウィジェットを追加する処理
    ///////////////////////////////////////
    function add_widget_before_1st_h2($the_content) {
    if ( is_single() && //投稿ページのとき、固定ページも表示する場合はis_singular()にする
    is_active_sidebar( ‘widget-in-article2’ ) //ウィジェットが設定されているとき
    ) {
    //広告(AdSense)タグを記入
    ob_start();//バッファリング
    dynamic_sidebar( ‘widget-in-article2’ );//本文中ウィジェットの表示
    $ad_template = ob_get_clean();
    $h2result = get_h2_included_in_body( $the_content );//本文にH2タグが含まれていれば取得
    if ( $h2result ) {//H2見出しが本文中にある場合のみ
    //最初のH2の手前に広告を挿入(最初のH2を置換)
    $count = 3;
    $the_content = preg_replace(H2_REG, $ad_template.$h2result, $the_content, 1);
    }
    }
    return $the_content;
    }
    add_filter(‘the_content’,’add_widget_before_1st_h2′);

  14. わいひら 名前:わいひら 投稿日:2016/09/08(木) 11:22:28 ID:9b0f964f7

    それではだめなような気がします。
    ただ、記事中のコードを変更して利用する場合は、僕がデバッグをするわけにもいかないので、詳しい検証は自前でお願いします。