本文記事1、2、3番目のH2見出し手前にアドセンスを挿入するWordPressカスタマイズ方法

1年ほど前、最初のH2見出し手前に広告を表示する方法を考えてみました。

ブログの記事中、特にリード文あとの広告は、アドセンスの収益面からみて有効な手段だと思います。その理由は、ページに訪れてみたも...

この方法は、現在自分のテーマでも利用しています。

ただ先日、フォーラムの方に「1番目と2番目と3番目のH2タグ手前にアドセンスを入れたい」という要望がありました。テーマの方では、自分の考えと他の機能との兼ね合いもあって機能追加はしませんでしたが、実装方法には、興味があったので、コピペで手軽にできるカスタマイズ方法を考えてみました。

photo by Kristina Alexanderson

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

完成形

今回の、カスタマイズをWordpressテーマ(子テーマ)に施すことによって、本文中に以下のような広告を挿入できるようになります。

1、2、3番目のH2タグ手前に広告を入れる

投稿を本文中に現れる、最初3つH2見出し手前だけに広告を表示します。

基本的にコピペ一発で、カスタマイズできて、あとは広告タグを挿入するだけにしたいと思います。

このカスタマイズを行う前に注意点があります。本文中広告のように、本文の中に広告が入ることは、あまり快く思わない方も一定数おられるかと思います。その本文中広告が、本文中に3つも入ると、「邪魔すぎる」と思われる方もいるかと思うので、カスタマイズする場合は、そういったことを踏まえてご利用ください。

カスタマイズ方法

カスタマイズ方法は、以下をfunctions.phpに貼り付けるだけです。

function add_ad_before_h2_for_3times($the_content) {
//広告(AdSense)タグを記入
$ad = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;

  if ( is_single() ) {//投稿ページ
    $h2 = '/^<h2.*?>.+?<\/h2>$/im';//H2見出しのパターン
    if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
      if ( $h2s[0] ) {//チェックは不要と思うけど一応
        if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][0], $ad.$h2s[0][0], $the_content);
        }
        if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][1], $ad.$h2s[0][1], $the_content);
        }
        if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][2], $ad.$h2s[0][2], $the_content);
        }
      }
    }
  }
  return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');

あとは、「ここにアドセンスを挿入」と書かれている部分をアドセンスタグに変更するだけです。

実際には以下のように表示されます。

1つのアドセンスタグを入力した表示例

最初3つのH2見出し手前に広告が表示され、それ以降の見出しには表示されていないのがわかります。

それぞれの広告タグを分ける場合

アドセンスの、カスタムチャネルを利用している場合は、パフォーマンスを計測するために、アドセンスタグを分けたい場合もあると思います。

そういった時用に、タグを分けられるコードも載せておきます。

function add_ad_before_h2_for_3times($the_content) {
//1つ目の広告タグを挿入
$ad1 = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//2つ目の広告タグを挿入
$ad2 = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;
//3つ目の広告タグを挿入
$ad3 = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;

  if ( is_single() ) {//投稿ページ
    $h2 = '/^<h2.*?>.+?<\/h2>$/im';//H2見出しのパターン
    if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
      if ( $h2s[0] ) {//チェックは不要と思うけど一応
        if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][0], $ad1.$h2s[0][0], $the_content);
        }
        if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][1], $ad2.$h2s[0][1], $the_content);
        }
        if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][2], $ad3.$h2s[0][2], $the_content);
        }
      }
    }
  }
  return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');

「ここにアドセンスを挿入」と書かれた部分に、それぞれタグを入力してください。

以下のように、異なる広告タグがセットされます。

3種類のアドセンス単語入力した表示例

注意点

今一度注意点です。

アドセンスポリシー上は、以下の点に注意してください。

  • 本文中広告には「スポンサーリンク」のようなラベルを入れる
  • 本文部分が短かすぎるとモバイル画面で2つ広告が表示されるかもしれないので注意

あと本文中のH2見出しですが、以下のような書き方の時は有効ですが、

本文
<h2>見出し</h2>
本文

以下のような書き方では、見出しと判断しないようにしています。(同名見出しがあった時の不具合対策として)

本文<h2>見出し</h2>本文

ただ、Wordpressエディターは上のような書き方はしないので、わざとそのような書き方にでもしない限りは、広告が表示されないなんてことはめったにない思います。

まとめ

というわけで、広告を全て本文中に入れる方法を紹介しました。

「とにかく本文中広告はパフォーマンスが良いので全て本文中に表示したい」なんて人にはいいかもしれません。

あと最後に、もう一度書きますが、本文中広告は邪魔と思われる方もおられますので、そこらへんは各自の広告ポリシーと照らし合わせて利用するか判断してください。

Googleいわく「タップされたモバイル広告のうち半数は意図せずタップされたもの」といったようなケースもあり、訪問ユーザーの利便性を損なう可能性もありますので、ご利用は計画的に。

『本文記事1、2、3番目のH2見出し手前にアドセンスを挿入するWordPressカスタマイズ方法』へのコメント

  1. 名前:noho 投稿日:2015/07/13(月) 22:45:01 ID:9f723c9fc

    こんばんは。フォーラムで質問したものです。
    テスト用のサイトから他のサイトに移植しようとしたら、アドセンスが表示されなくなりました。

    原因は調べたらわかりました。
    PS Disable Auto Formatting
    という整形プラグインです。改行の問題がありこのプラグインを使っています。。

    「見出しのパターン」のところを修正すればいいと思うのですが、、
    正規表現に疎くいまいち改善できません。。

    h2を認識させるよい方法はないものでしょうか?
    たびたび申し訳ございませんが、ご助言いただけると大変助かります。

  2. アバター画像 名前:わいひら 投稿日:2015/07/14(火) 12:50:42 ID:04af66d7b

    僕は、そのプラグインを使ったことがないのですが、そのプラグインを利用すると、H2タグ前後のソースはどのように整形されるのでしょうか?

    ブラウザのソースを開いて、該当部分をキャプチャした画像のURLをいただいて良いでしょうか。(ソーステキストを貼り付けても、おそらくコメント機能によりタグが取り除かれてしまう可能性があるため)

    面倒な場合は、以下などからちょっと勉強するだけで、このエントリー程度の正規表現なら、すぐ理解できると思います。
    ゼロから正規表現を使えるようになるためのステップ – Qiita

  3. 名前:noho 投稿日:2015/07/14(火) 20:45:45 ID:b407c271d

    こんばんは。

    説明不足で大変申し訳ございません。画像を張りつけます。
    正規表現の方もお手数おかけしないように、少し勉強してみようと思います。

    投稿画面のテキストttp://s1.gazo.cc/up/142410.png

    PS Disable Auto Formattingプラグイン無効(正常に表示できる)ttp://s1.gazo.cc/up/142411.png

    PS Disable Auto Formattingプラグイン有効(消えている)ttp://s1.gazo.cc/up/142412.png

    PS Disable Auto Formattingは、たとえば投稿画面のテキストエディタ上で改行されていてもbrタグが入っていないと横並びなります。
    ちょっと見た目ではわからない部分がありますが、内部的にはh2も横並びとして扱われているのではないかと推測しているのですが…。

    PS Disable Auto Formattingのプラグインの説明ttp://netaone.com/wp/ps-disable-auto-formatting/

    よろしくお願いします。

  4. 名前:noho 投稿日:2015/07/14(火) 20:48:47 ID:b407c271d

    すいません、コメント送信がうまくいかず、リンクにしてもうまく投稿できなかったため、見苦しくになってしまいました。お詫びします。。
    お手数おかけしますが、ご返信いただけると助かります。

  5. アバター画像 名前:わいひら 投稿日:2015/07/15(水) 13:23:30 ID:3cf0bfe0a

    ソースを見た限り問題があるのはこちらの方ですね。

    PS Disable Auto Formattingプラグイン無効(正常に表示できる)ttp://s1.gazo.cc/up/142411.png

    ソースを見る限りは、プラグイン有効の方は、問題ないように見えます。

    同じテキストのH2見出しにしないのであれば、以下のようにしても大丈夫かと思います。

    $h2 = '/.+?<\/h2>/im';

    これだったら、大抵の場合はOKだと思います。

  6. 名前:noho 投稿日:2015/07/15(水) 18:17:23 ID:0f23f5a94

    たびたびありがとうございます。
    なるほど承知しました。そして無事表示できました。
    個人的には記事内で同じ見出しは使わないと思うので、これで行きたいと思います。

    この度はいろいろとありがとうございました。

  7. 名前:しゅん 投稿日:2015/08/01(土) 23:26:37 ID:f7ddf6c35

    この記事すごく参考になりました!!
    早速、自分のサイトにも導入したいと思います^^

    あと一つ質問なんですが、ループ途中(例えば記事一覧の二番目と三番目の間)にアドセンスを挿入したい場合は、どうfunctions.phpに記載すれば良いですか?

    この記事のように、全てのループ部分に反映させたら便利だなと思ったので、是非ご教授していただきたいです。

  8. アバター画像 名前:わいひら 投稿日:2015/08/02(日) 10:35:03 ID:ccd0b3c91

    こちらの投稿ページのカスタマイズ方法と、記事一覧のカスタマイズ方法は全く別物になります。
    なので、以下のようなカスタマイズを行う必要があるかもしれません。

    【STINGER】記事一覧にかっこよくアドセンスを挿入するWordPressカスタマイズ方法

    基本的にfunctions.phpに記載するだけでは無理ではないかと思います。

    その他の情報を探すなら「Wordpress 一覧 広告」もしくは「Wordpress 一覧 アドセンス」と検索してみるといろいろ出てくるかもしれません。

  9. 名前:j民 投稿日:2015/08/28(金) 07:47:51 ID:596fd6ab2

    初歩的な質問な失礼します。
    H2ではなくh3の1番目2番目とアドセンスを挿入したいのですが
    どの部分を書き換えればいいでしょうか?

  10. アバター画像 名前:わいひら 投稿日:2015/08/28(金) 13:46:36 ID:e0d3bfeea

    以下の部分のみのh2をh3に変換すればいけるかと思います。

    '/^.+?<\/h2>$/im';//H2見出しのパターン
  11. 名前:waimi 投稿日:2015/11/25(水) 01:44:25 ID:9f75c29d2

    こんばんは。Simplicity愛用しているwaimiというものです。
    質問なのですが、こちらの方法でスマホのみで表示させるにはどうすれば良いのでしょうか?

  12. アバター画像 名前:わいひら 投稿日:2015/11/25(水) 12:56:57 ID:34408b3aa

    関数内にis_mobile()条件分岐を付け加えれば、スマホのみで表示されるかと思います。(Simplicityの場合)
    Simplicity以外のテーマの場合は、wp_is_mobile()関数を利用する必要があるかもしれません。

  13. 名前:まめしば 投稿日:2016/04/21(木) 00:32:06 ID:06f1410af

    はじめまして!

    知りたい情報が掲載されていたので、とても助かりました。

    しかし、ご相談なのですが「本文中広告には「スポンサーリンク」のようなラベルを入れる」とありますが、functions.phpのどの部分にラベルを入れればアドセンスと同じように自動的に表示されますでしょうか?

    ご存知でしたら教えて頂けると嬉しいです!

    よろしくお願いいたします。

  14. アバター画像 名前:わいひら 投稿日:2016/04/21(木) 22:42:04 ID:d20820617

    はじめまして。
    以下は、アドセンスコードと置換する部分ですが、アドセンスコードを挿入した上に

    //////////////////////////
    //ここにアドセンスを挿入//
    //////////////////////////

    以下のように追加挿入すればよいかと思います。

    スポンサーリンク
  15. 名前:fk 投稿日:2016/04/24(日) 21:39:48 ID:10c381934

    初めまして。

    いつも、大変勉強になる記事ありがとうございます。

    一つご相談させていただけますか。

    この記事の内容を応用して、ではなく、n番目の任意のhtmlタグ(※10個目のみたいな)の直前に、任意の文字列を挿入したいと考えております。

    しかし、単純に「$h2=’〜〜’;」の〜部分を書き換えたところ、記事内全てのに文字列が挿入されてしまうようになりました。

    PHPに疎く原因がわからないのですが、何らかのヒントを頂けると大変嬉しいのですが・・・。

    お忙しい中恐縮ですが、宜しくお願い致します。

  16. 名前:fk 投稿日:2016/04/26(火) 12:00:41 ID:ee4dd7eb6


    自己解決しました。
    失礼しました。

  17. アバター画像 名前:わいひら 投稿日:2016/04/26(火) 17:40:46 ID:1e52665e8

    体調不良で、返信が遅れて申しわけありません。
    ただ、いずれにせよ、「$h2=’〜〜’;」の部分がなんと書き換えられたのかがわからないと、ちょっと何とも言えなかったです。

  18. 名前:fk 投稿日:2016/04/28(木) 12:19:17 ID:87336f108

    ご返信すみません。

    「$h2=’〜〜’;」の中に一種類のタグを入れたのが間違いでした。
    一つ一つが異なるように正規表現で指定しないと機能しなかったのですね。

  19. アバター画像 名前:わいひら 投稿日:2016/04/28(木) 13:04:02 ID:190607ec9

    そうですね。確かに正規表現は、目的のものに一致するように書かないと、正常機能しないかもしれません。

  20. 名前:田村ひかり 投稿日:2016/06/25(土) 18:36:39 ID:b8f87b0b5

    いつも楽しく読ませてもらっています。
    この記事を参考にし、「h2見出し数でアドセンス位置を変えるWordPressカスタマイズ方法」という記事を書かせて頂きました。
    http://blankalbum.com/add-ads-by-counting-h2/

    コードの利用や私のSimplicity2の押し売り(!)に問題ありましたら、ご連絡くださいませ。

  21. アバター画像 名前:わいひら 投稿日:2016/06/25(土) 19:42:36 ID:f82401d7a

    いえいえ、Simplicityをブログで紹介していただけるのは滅茶苦茶嬉しいです。
    コードの利用も参照元を書いていただけているので、全く問題ないです。
    紹介していただきありがとうございます!

  22. 名前:YyY 投稿日:2016/08/27(土) 15:04:15 ID:083a5cd22

    こんにちは。
    いつも楽しく読ませて頂いて、勉強させてもらっています。

    ちょっと一つ質問なんですが、この方法で見出しタグ上にアドセンスを表示するにはテンプレートが”Simplicity”でなくてはいけないのでしょうか?

    自分は「賢威」を使っているのですが、functions.phpの一番下にこのコードを埋め込んでもうまく表示されません。
    コードを追加して実際に自分のサイトを見てみると一番上の部分にコードがそのまま表示されてしまいます。

    お忙しい中恐縮ですが、何かしらヒントなどを教えていただけると幸いです。
    よろしくお願いします。

  23. 名前:YyY 投稿日:2016/08/27(土) 16:37:13 ID:083a5cd22

    ↑すみません、自己解決しました!!

  24. アバター画像 名前:わいひら 投稿日:2016/08/29(月) 08:03:55 ID:0120098c8

    うまくいったようでよかったです。
    一応書いておくと、この記事のカスタマイズは、特にSimplicityではなくても大抵のテーマであるが動作することを念頭に書いています。
    動作テストも、Wordpress公式テーマで行っています。

  25. 名前:Maron 投稿日:2016/09/09(金) 18:16:33 ID:29026980f

    こんにちは、
    カスタムチャネル利用ではない方のコードをコピベしたら、表示されました。
    ありがとうございます。

    ところで、h2の1番目と2番目だけを表示したい場合は、どうすれば良いのでしょうか?

    お忙しい中、恐れ入ります。教えて頂けますと幸いです。

    よろしくお願いいたします。

  26. 名前:komori 投稿日:2016/09/10(土) 02:43:44 ID:517c69304

    初めまして!
    アドセンスの広告を自動で貼るためのやり方を探していたらこちらにたどり着きました!
    いくつか質問があるのですが、お時間のある時に教えていただけますと嬉しいです!!

    まず、3つ目の広告をなしにして2つだけ表示するにはどのようにタグを変更すればよいでしょうか?

    もう一つは、私は3つサイトを持っていて、2つは問題なく表示できたのになぜか一つのサイトは同じようにしているのにエラーになってしまいます。
    アドセンスのプラグインが干渉しているのかな?と思って停止してみてもダメでした。

    エラーメッセージの最後に「ライン上の3242」と出ています。
    またサーバーのfunctions.phpを見てみると記述してないのに「?」がたくさん現れていてます。
    このような説明で分かりますでしょうか。。。
    画像を添付したいのですが添付の仕方もイマイチわからなかったので文字で説明してみました。

    もしお分かりでしたらアドバイスいただけるとありがたいです(>人<)
    どうぞよろしくお願いいたしますm_ _m

  27. 名前:komori 投稿日:2016/09/10(土) 03:30:21 ID:517c69304

    度々すみません!
    1つ目は上の方が同じ質問をされてましたね^^;
    もう一つ教えていただきたいのですが、もし2つ目のh2タグの上だけにアドセンスコードを貼る場合はどうなるでしょうか?

    よろしくお願いいたしますm_ _m

  28. アバター画像 名前:わいひら 投稿日:2016/09/13(火) 12:15:28 ID:be2062334

    >>Maronさん
    以下の部分をコメントアウトすればいけるかと思います。

    //        if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
    //          $the_content  = str_replace($h2s[0][2], $ad3.$h2s[0][2], $the_content);
    //        }
  29. アバター画像 名前:わいひら 投稿日:2016/09/13(火) 12:31:36 ID:be2062334

    >>komoriさん

    このような説明で分かりますでしょうか。。。

    申し訳ないですが、わからないです;
    この記事のコードは、基本的に他のカスタマイズや、プラグイン干渉がないことを想定して書いているものなので、条件が変われば、エラーが出ることもあります。
    そして、サイトの設定などは、書き込みからはわからないため、何とも言えないです。
    使用しているエディターなどもわからないため、コードを利用する場合は、基本的に自力で解決をお願いします。

    もう一つ教えていただきたいのですが、もし2つ目のh2タグの上だけにアドセンスコードを貼る場合はどうなるでしょうか?

    「それぞれの広告タグを分ける場合」項目の以下の部分のみにコードを挿入すればいけるかと思います。

    $ad2 = <<< EOF
    //////////////////////////
    //ここにアドセンスを挿入//
    //////////////////////////
    EOF;
  30. 名前:komori 投稿日:2016/09/14(水) 14:34:02 ID:4ee6e2cd7

    ありがとうございます!
    考えられる原因はいろいろありありますよね^^;
    一つ一つ探っていってみます!

    2つ目のh2タグの上だけにアドセンスコードの方はできました!
    どうもありがとうございましたm_ _m

  31. アバター画像 名前:わいひら 投稿日:2016/09/14(水) 19:43:05 ID:277d6bcc8

    アドセンスコード、うまくいったようでよかったです。
    基本的にエラーの原因としては、文法の間違いか、同名関数が提示してあるとか、プラグインの競合なんて場合が多いと思います。

  32. 名前:借金万歳 投稿日:2016/09/18(日) 14:14:36 ID:c53a74681

    この記事のおかげで、H2の上にアドンセンスを表示できました。
    ありがとうございました。

  33. アバター画像 名前:わいひら 投稿日:2016/09/18(日) 14:21:46 ID:90734ff81

    記事がお役に立てたようでよかったです!

  34. 名前:みやじま 投稿日:2017/04/26(水) 01:42:43 ID:0fcec38f9

    この記事のやり方でH2後に広告記事を挿入することはできたのですが、記事のカテゴリーによっては広告を表示させないようにする方法はありますか? 
    いままでは広告コードをウィジェットで管理して、非表示とするカテゴリーを指定していました。うまい方法があれば、お教えください。
    よろしくお願いします!

  35. アバター画像 名前:わいひら 投稿日:2017/04/26(水) 17:26:13 ID:e15fbe9ae

    add_filterの部分をis_categoryで条件分岐すればできるかと思います。
    表示しない場合は、表示しないカテゴリIDを取得して!is_category(‘カテゴリID’)みたいな感じで条件分岐します。

  36. 名前:みやじま 投稿日:2017/04/28(金) 01:31:43 ID:227307901

    わいひらさん、ご回答、ありがとうございます。PHPの知識がないもので、

    add_filter(‘the_content’,’add_ad_before_h2_for_3times’);

    の部分について条件分岐させて非表示にするということで理解はできたのですが、
    実際にどのようなコードを書いていけばよいのでしょうか?
    たとえば、カテゴリID2、3、4のカテゴリの際に表示させないと言う場合は
    どのようにすればよいでしょうか?
    たびたびの質問で申し訳ありませんが、お教えいただけると幸いです。

  37. アバター画像 名前:わいひら 投稿日:2017/04/28(金) 20:58:02 ID:c415a5573

    複数指定は、is_categoryでも、条件分岐をorでつなげれば、できますが、
    複数指定ならin_categoryを使用する方が楽かもしれません。

    if (!in_category(array(2,3,4))) {
      add_filter('the_content','add_ad_before_h2_for_3times');
     }

    多分こんな感じでいけるのではないかと思います。

  38. 名前:みやじま 投稿日:2017/04/30(日) 01:04:43 ID:c48bd4061

    わいひらさん、コード例のご回答、ありがとうございます。
    サイトで試してみたのですが、なぜか上手く行きませんでした。
    自分でもいろいろ調べて調整してみます。
    ともあれ、ありがとうございました!

  39. 名前:TK 投稿日:2017/09/01(金) 20:56:12 ID:b3deffdbf

    いつも勉強させていただいてます。
    今回もバッチリできました。
    ありがとうございます^^。

    更に今回の広告表示を特定のページやカテゴリーには表示させないようにするには、どのようにすればできますでしょうか?

    お忙しいとは思いますが、何卒よろしくお願いします。

  40. アバター画像 名前:わいひら 投稿日:2017/09/02(土) 18:09:02 ID:96f522086

    以下のように条件を設定すれば、できるんではないかと思います。

    if (条件) {
      add_filter('the_content','add_ad_before_h2_for_3times');
    }

    特定ページに表示しないのであれば、is_single
    カテゴリを指定するのであれば、in_categoryを使用すればできるかと思います。

  41. 名前:ごろー 投稿日:2017/09/18(月) 14:16:49 ID:c39556a40

    はじめまして。
    いつも見させてもらっております。

    いきなりですが質問させて下さい。

    こちらの記事を参考にしながらh2タグ直前にアドセンスを貼り付けようとし子テーマのfunctions.phpにコードを記述しました。

    3番目のh2タグにアドセンスを貼り付けようと以下のコードを記述しました。

    function add_ad_before_h2_for_once($the_content) {
    //広告(AdSense)タグを記入
    $ad1 = <<< EOF
    アドセンス①(この行をアドセンスコードに置き換えて下さい。)
    EOF;
      if ( is_single() ) {//投稿ページ
        $h2 = '/^.+?$/im';//H2見出しのパターン
        if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
          if ( $h2s[0] ) {//チェックは不要と思うけど一応
            if ( $h2s[0][2] ) {//3番目のH2見出し手前にad1を挿入
              $the_content  = str_replace($h2s[0][2], $ad1.$h2s[0][2], $the_content);
            }
          }
        }
      }
      return $the_content;
    }
    add_filter('the_content','add_ad_before_h2_for_once');

    そうしたら、ワードプレスのダッシュボード、自身のwebサイトの上部、端から端までそのコードがズラっと出てきてしまいました…

    ちなみにどのコードでも同じでした…

    これは間違っているからこうなっていると思うのですが原因がわかりません。

    サイト文字だらけになってしまうため、上記のコードを記述したままサイトurlは載せれないのですが、普通の状態のurlを載せておきます。

    どうかご教授下さい。

    まったくの初心者です。よろしくお願いいたします。

  42. アバター画像 名前:わいひら 投稿日:2017/09/18(月) 20:05:15 ID:a15dd0ae5

    もし、コメントに表示されているままコード記入されているのであれば、$h2変数に入る正規表現が間違っているように思います。
    ただ上記が原因でなかったとしても、PHPでのカスタマイズになるので、サイトを見ても、こちら側からは、コードを見ることができず、詳しい原因究明は出来ないのでご了承ください。

  43. 名前:ほし 投稿日:2017/10/02(月) 15:48:41 ID:2c573d3b2

    上にもあるように私も特定のカテゴリの記事のみ非表示する方法がわかりません。

    アフィリエイトの記事で見出しにアドセンスが表示されるのは好ましくないと思い、非表示にしたいのですが上手く行きません…。add_filterにしてみたりしたのですが無理でした。

    「!in_categoryで非表示にする方法」か「広告の除外が適用される」ようにすることは出来ませんか?もし解決策が分かるならご教授ください、

  44. アバター画像 名前:わいひら 投稿日:2017/10/03(火) 23:28:13 ID:6559687de

    add_filterにしてみたりしたのですが無理でした。

    どのようなコードを書かれたのですか?

  45. 名前:ほし 投稿日:2017/10/04(水) 12:41:54 ID:4c0026245

    上の方で書かれている

    if (!in_category(111)) {
      add_filter('the_content','add_ad_before_h2_for_3times');
     }

    というのを追加したという意味です。

    これでそのIDが111のカテゴリの記事にはアドセンスが非表示になるとおもったのですが上手く適用されません。どのカテゴリでも表示されます。

  46. アバター画像 名前:わいひら 投稿日:2017/10/04(水) 13:57:57 ID:57d89240e

    そしたら、関数名の下あたりに、以下のようにif文を挿入するとどうでしょうか?

    function add_ad_before_h2_for_3times($the_content) {
      if (in_category(1)) {
        return $the_content;
      }
  47. 名前:ほし 投稿日:2017/10/04(水) 15:39:17 ID:4c0026245

    わいひらさん、ありがとうございます!
    無事解決しました!

    これでアフィリエイト広告に誘導しやすいです!

    解決していただき感謝いたします。

  48. 名前:TK 投稿日:2017/10/19(木) 23:47:13 ID:9b9f93df4

    いつも勉強させていただいてます。

    さっそくの質問すいません。
    2番目と4番目のH2の前にアドセンス広告を表示させたいのですが、今は3番目までしかありませんが、4番目や5番目と追加するには、どのようにいじれば良いでしょうか?

    質問ばかりですいません。
    よろしくお願いします。

  49. アバター画像 名前:わいひら 投稿日:2017/10/22(日) 22:18:14 ID:4fad55f6d

    似たような条件分岐のコードが並んでいる最後の部分に以下のコードを追記すればいけるかと思います。

            if ( $h2s[0][3] ) {//3番目のH2見出し手前に広告を挿入
              $the_content  = str_replace($h2s[0][3], $ad.$h2s[0][3], $the_content);
            }

    ※最初の方のコードです。

  50. 名前:前川 投稿日:2017/11/28(火) 20:15:51 ID:1ca5b7945

    こんばんは。
    携帯サイトを運営している前川というものです。
    突然のコメント、失礼します。こちらのサイト記事を参考に、当ブログでもアドセンスの広告を3番めのh2見出し上に表示させようと思い、1番目、2番目のコードを削除の上子テーマのfunctions.phpに貼り付けました。

    しかし、記事によってきちんと表示されたりされなかったり、何故か4番目のh2の上に表示されるなどの現象が起こっています。解決策はありますでしょうか?お手数ですが、お手隙の際にアドバイスを頂ければ幸いです。
    (1番目のH2上に表示されている広告はSimpleCityの機能で表示させています。この機能をオフにしても結果は変わりませんでした)

    【広告が表示されていない記事】
    http://keitai-tiebukuro.com/2017/09/05/post-304/

    【広告が4番目H2上に表示されている記事】
    http://keitai-tiebukuro.com/2017/10/16/cell-phone-market-price/

    【正しく表示されている記事】
    http://keitai-tiebukuro.com/2017/09/23/post-690/

  51. 名前:前川 投稿日:2017/11/28(火) 20:50:27 ID:1ca5b7945

    度々申し訳ございません。
    自力でなんとか改善できました。どうやらH2タグ内で改行を行っていたことが原因だったようです。お騒がせしました。

  52. アバター画像 名前:わいひら 投稿日:2017/11/28(火) 22:53:57 ID:5f51a1130

    解決報告ありがとうございます。
    とりあえずうまくいったようでよかったです。

  53. 名前:田中悟 投稿日:2018/08/31(金) 01:39:43 ID:bc3bae951

    いつも役に立つ情報をありがとうございます。

    1つ質問させて頂きたいのですが、「それぞれの広告タグを分ける場合」という方法を参考に、faction.phpに追記したのですが、h2の数が、広告数を満たしている記事は問題なく表示されます。

    ただ、h2タグがないor広告数より少ない場合に、表示されなかった広告が「Notice: Undefined offset」となって記事中に表示されてしまいます。

    h2タグがない場合(広告の表示する位置がない場合)に、「Notice: Undefined offset」と表示させない為にはどうしたらいいのでしょうか。

    ご回答いただけると幸いです。

    よろしくお願いします。

  54. アバター画像 名前:わいひら 投稿日:2018/09/03(月) 20:36:25 ID:1e22a5a03

    実際に試してはいないですが、おそらく以下のように条件分岐を全部書き換えると警告は出なくなると思います。
    このような記述を

    $h2s[0][0]

    このように変更

    isset($h2s[0][0])
  55. 名前:ブロガー1 投稿日:2018/09/03(月) 22:14:39 ID:0df9dd5d1

    夜分に失礼します。
    本記事を参考にさせていただき、広告配置カスタマイズをしており、その中で一点質問がございます。

    ①リンク広告と②通常のイメージ広告を縦に並べる場合、以下のような記述にしても機能しますでしょうか?

    $ad1 = <<< EOF
    アドセンス①(この行をアドセンスコードに置き換えて下さい。)
    アドセンス②(縦に広告を並べるために追加)
    EOF;

    過去にfunctionsphpをイジって真っ白になったことがあり慎重に進めたく、ご教示いただけますと幸いです。よろしくお願い致します。

  56. アバター画像 名前:わいひら 投稿日:2018/09/03(月) 22:23:44 ID:1e22a5a03

    リンク広告とは、何のことでしょう?
    リンクユニット広告のことでしょうか?

  57. 名前:ブロガー1 投稿日:2018/09/04(火) 06:40:44 ID:65a194d74

    大変失礼いたしました。
    リンクユニット広告のことです。
    よろしくお願いします。

  58. アバター画像 名前:わいひら 投稿日:2018/09/04(火) 22:17:03 ID:d1c4b6e4c

    それだと、モバイル画面で表示させたとき、アドセンスポリシー違反にならないでしょうか。
    こちらの「広告で画面を埋めない」の項目です。
    スマホサイトでやってはダメなAdSenseポリシー違反の例 | iscle [イズクル]

  59. 名前:wonderwonder 投稿日:2019/01/08(火) 09:24:13 ID:7b414b7f5

    いつも大変お世話になっております。
    こちらの記事を参考に、カスタム投稿タイプにて広告を表示させようと思い、
    if ( is_single() ) {//投稿ページ の部分を
    if ( is_singular() ) {//投稿ページ に変更して見たのですがうまくいかないようでした。

    カスタム投稿タイプにて広告を表示させるためにはどのようにしたらよいかご教授頂けますでしょうか。どうぞよろしくお願いいたします。

  60. アバター画像 名前:わいひら 投稿日:2019/01/09(水) 00:15:11 ID:d97285d6d

    以下のページに書かれているような条件分岐を利用するとどうでしょうか。
    https://chaika.hatenablog.com/entry/2015/04/19/090000
    リファレンスページ。
    https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_singular

  61. 名前:wonderwonder 投稿日:2019/01/09(水) 13:47:47 ID:95833b295

    わいひらさま

    ご返信ありがとうございます。
    リンク先の指摘通り、 is_single() の代わりに is_singular()を利用して見たのですが、表示がされないようでした。。
    もう少し自分で問題を調べて見るように致します。ありがとうございました。

  62. アバター画像 名前:わいひら 投稿日:2019/01/09(水) 17:54:43 ID:d97285d6d

    そしたら、こちらのget_post_type() を使った方法だとどうでしょう?
    https://irec.jp/wordpress/custom-post-type/custom-post-conditional-branching/

  63. 名前:wonderwonder 投稿日:2019/01/10(木) 14:38:13 ID:b514b57e7

    わいひらさま

    再度ご連絡ありがとうございます。
    get_post_type() も試して見ましたがダメのようでした。

    is_single()を利用すれば、通常のシングル投稿ではしっかりと広告が表示できているので、カスタム投稿ページに何らかの問題があると思っています。

    ご迷惑おかけ致しました。

  64. 名前:fighting 投稿日:2019/07/05(金) 23:26:30 ID:caf55a8f7

    >カスタマイズ方法は、以下をfunctions.phpに貼り付けるだけです。

    simplicity2を使っているのですが、functions.php「のどこに」張り付けるのでしょうか。

    1行目から貼り付けたらページがぐちゃぐちゃになってしまいました。

    教えていただけないでしょうか。

  65. アバター画像 名前:わいひら 投稿日:2019/07/06(土) 21:44:48 ID:74fcba30b

    最後に改行して追記する形で記入します。

  66. 名前:fighting 投稿日:2019/07/07(日) 00:42:00 ID:468014975

    わいひら さま、ご返信ありがとうございます。

    できました。私の場合、h2ではなく、h4を使っているので、すべてそれに置き換えてやっているのですが、h2(h4)の直前ではなく、二、三行上、あるいは、その前の文章全体のどこかにアトランダムに記事内広告を挿入するよう、コードを編集することはできないでしょうか?

    素人なので、部分的にではなく、全体像がわかるように提示して頂けると、すごく助かります。

  67. アバター画像 名前:わいひら 投稿日:2019/07/08(月) 10:58:11 ID:78af1a43e

    素人なので、部分的にではなく、全体像がわかるように提示して頂けると、すごく助かります。

    PHPを駆使すれば出来るとは思います。
    ただ、当記事はあくまでサンプルコードを提示しているだけであって、僕はカスタマイズ請負をしているわけではありません。
    細かな調整については、自身で行っていただくかクラウドソーシング等でプロの方にご依頼いただければと思います。

  68. 名前:およよ 投稿日:2019/08/05(月) 17:14:15 ID:d7d2c7b1d

    いつもご苦労さまです。

    この記事はH2見出し手前にアドセンス挿入することを目的としていますが
    その他aspの広告を挿入することもできるんですよね。

    私はH2見出し手前全てに挿入したいのですが、どの様にすれば良いのでしょうか?
    (html cssしかわかりません)

    お時間あればよろしくおねがいします。

  69. アバター画像 名前:わいひら 投稿日:2019/08/06(火) 12:14:37 ID:539d0952e

    全てのH2見出し手前で広告を表示させるには、以下のコードを利用した方が良いかと思います。
    【アドセンス収益向上】簡単!プラグインやショートコード不要でWordPress記事中に広告を挿入する方法

    こちらの「最初のH2見出し手前に広告を挿入する設定」に書かれているコードをコピペして、以下の部分のコードを変更すればできるかと思います。

    $the_content  = preg_replace($h2, $ads.$h2s[0], $the_content, 1);

    $the_content  = preg_replace($h2, $ads.$h2s[0], $the_content, -1);

    ただし、このサイトで公開しているコードはあくまでサンプルコードなので、不具合が出たり、PHPがわからなくても、詳しいサポートはできないので、あらかじめご了承ください。

  70. 名前:およよ 投稿日:2019/08/07(水) 07:42:12 ID:0d0888f28

    ありがとうございます。

    応用して素晴らしい状態にする事ができました。
    これからも頑張って下さい。

  71. 名前:ひよ 投稿日:2019/08/13(火) 12:39:14 ID:53df43160

    はじめまして、大変参考にさせてもらっています。

    私も53番目のコメントと同じ状況でしてH2見出しが足りない記事でNotice: Undefined offsetと表示されます。
    54番目のコメントを見て条件分岐を変更してみたのですがWPすら表示されなくなりました;;

    全部変更とは13,16,19行目の3か所でしょうか?

  72. アバター画像 名前:わいひら 投稿日:2019/08/13(火) 22:40:54 ID:cc7386a41

    全ての配列の条件分岐をissetを適用したものに変更しても問題ないように思います。
    エラーでWordPressが表示されないのであれば、何か文法的な記述ミスがあるのではないかと思います。
    文法の記述ミスは、エラーメッセージを出力させてエラーメッセージに書かれている問題の対応をするしかないかと思います。

  73. 名前:とおる 投稿日:2022/07/31(日) 20:57:27 ID:2309b5f83

    いつもありがとうございます。
    一つ目のH2の前に広告を入れようと、下記のコードをfunction.phpに記述いたしました。
    function add_ad_before_h2_for_3times($the_content) {
    //広告(AdSense)タグを記入
    $ad = <<< EOF
    広告
    EOF;

    if ( is_single() ) {//投稿ページ
    $h2 = '/^.+?$/im’;//H2見出しのパターン
    if ( preg_match( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
    if ( $h2s[0] ) {//チェックは不要と思うけど一応
    if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
    $the_content = str_replace($h2s[0][0], $ad.$h2s[0][0], $the_content);
    }
    }
    }
    }
    return $the_content;
    }
    add_filter(‘the_content’,’add_ad_before_h2_for_3times’, 9);

    これを入れてみたのですが

    Warning: preg_match(): Unknown modifier ‘h’

    というのが投稿ページに表示されて
    広告が出る予定の場所にCall Stackと出て9つほどの

    9 1.3526 10635872 preg_match ( )

    みたいなものが出ています。
    どのようにしたら正常に表示されますでしょうか?

  74. アバター画像 名前:わいひら 投稿日:2022/08/09(火) 12:03:28 ID:de49b741e

    申し訳ないですが、PHPの場合、実際のコードを見てみないと確かなことはわかりません。
    おそらくpreg_matchが出てきているコードの第一引数の中の$h2変数の内容に問題があるのではないかと推測できますが、上記のコードでは変数内にhみたいなものがないのでちょっとわかりません。

    それで原因がわかるかはわかりませんが、できれば出力されている警告メッセージ全てを貼り付けていただけると助かります(ファイルパスとかに公開したくない文字列が含まれている場合はそこは削除とかで)。

  75. 名前:とおる 投稿日:2022/08/13(土) 16:49:27 ID:7ad03208a

    もしかすると、返信したコメントがちゃんと反映されてないかと思い、連投お許し下さい。
    コードをそのままコメント欄に打ち込むと表示が上手くされていないみたいなのですが、
    どうすればコードをちゃんとコメント欄に打ち込めますか?
    みなさん、コードの部分だけボックスがついているみたいなので、特殊なやり方があるのかと思い、質問させていただきました。

  76. アバター画像 名前:わいひら 投稿日:2022/08/16(火) 11:56:22 ID:f9379b99c

    僕の場合はそのままなんですが、コードをpreタグで囲って入力しています。
    http://www.htmq.com/html5/pre.shtml

  77. 名前:とおる 投稿日:2022/08/16(火) 17:25:34 ID:4eb0fd863

    わいひら様
    返信ありがとございます。
    こちら何度かコード付きでコメントの返信を送っているのですが、
    何かによって弾かれているのか、わいひら様に届いていないようなんです。
    preタグやcodeタグで囲ったりもしてみたのですが、コメント送信を押すとどうやらわいひら様に届いていないようで・・・
    もし原因がわからない場合はわいひら様の返信を待って、もう一度preタグで囲って送信してみます。
    お手数おかけてして申し訳ないです。

  78. アバター画像 名前:わいひら 投稿日:2022/08/28(日) 22:47:22 ID:1f17dce87

    書き込めなくてメールが来たので、以下に転載。

    題名: 一つ目のH2の前に広告を入れようとするとエラーになった件について

    https://nelog.jp/add-ads-before-h2
    こちらのH2前広告の記事において、コメントにて質問させて頂いた「とおる」という者です。
    何度かコメント方に書かせて頂いたのですが、何かのエラーなのかコメント欄にコメントが一向に反映されておらず、おそらくわいひら様にコメントが届いてないと推測できたので、メールでの返信になったことをご了承ください。

    さて、本題です。
    7/31の質問の内容に関しまして、自己解決したので、その報告と一点質問があります。
    まず自己解決の内容は
    「,」が全角表示になっていたので、半角にしました。
    「preg_match_all」にしなければいけない所、「preg_match」にしてしまっていました。
    これらを修正した所、正常に表示されました。

    そこで、質問なのですが
    h2見出し上に一つだけ広告を出す場合に「preg_match_all」ではなく「preg_match」ではダメなのでしょうか?
    「preg_match」に変えた所、ありとあらゆる所に広告コードが出てしまうようになってしまいました。

    以下、試したコードです

    function add_ad_before_h2_for_3times($the_content) {
    //広告(AdSense)タグを記入
    $ad = <<< EOF
    広告コード
    EOF;
    
      if ( is_single() ) {//投稿ページ
        $h2 = '/^.+?<\/h2>$/im';//H2見出しのパターン
        if ( preg_match( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
          if ( $h2s[0] ) {//チェックは不要と思うけど一応
            if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
              $the_content  = str_replace($h2s[0][0], $ad.$h2s[0][0], $the_content);
            }
          }
        }
      }
      return $the_content;
    }
    add_filter('the_content','add_ad_before_h2_for_3times');

    以上となります。
    最初の見出し上にだけ広告を表示させたい場合は、「preg_match_all」よりも「preg_match」で最初にマッチした所のみ挿入というイメージだったのですが、そもそもこのイメージが間違いでしょうか?
    また、「preg_match」と「str_replace」の組み合わせは無理なのでしょうか?

    お忙しい中かと思いますが、時間のある時にでも返答して頂けると幸いです。

  79. アバター画像 名前:わいひら 投稿日:2022/08/28(日) 22:56:14 ID:1f17dce87

    「,」が全角表示になっていたので、半角にしました。

    僕の環境で試した限りですが、本記事のコードの「,」は半角になっているようでした。

    h2見出し上に一つだけ広告を出す場合に「preg_match_all」ではなく「preg_match」ではダメなのでしょうか?

    本記事は、「H2見出しの1個目と2個目と3個目に広告を表示する」という記事なので「preg_match」ではだめで、正規表現検索結果をすべて取得する「preg_match_all」でないとだめです。

    最初の見出し上にだけ広告を表示させたい場合は、「preg_match_all」よりも「preg_match」で最初にマッチした所のみ挿入というイメージだったのですが、そもそもこのイメージが間違いでしょうか?

    そのようにしたい場合は、記事の冒頭のブログカードリンクにもありますように、以下の記事の方法を使った方が良いかと思います。
    https://nelog.jp/adsense-insert-body

    また、「preg_match」と「str_replace」の組み合わせは無理なのでしょうか?

    ちょっとこれだけではわかりかねます。
    どういった組み合わせのコードなのか実際のコードを見てみないとちょっとわからないかもしれません。