こんにちは、asです
先日はアドセンス広告のレイアウトについて書きましたが、今回は表示について書きます(^^)

サイドバーや記事下には無事表示できたけど、記事内、特に目次の下に表示したかったのですが、少しつまづきました。
目次(TOC)の下に表示させる方法と、記事内のタイトルの上に表示させる方法をシェアします♪


本文中のh2タグ上にアドセンス広告を表示させる

本文中の大見出しにはh2タグを使用しています。
そのh2タグの、2番目、4番目、6番目に広告が表示されるようにしたいと思います!
functions.phpに下記を記載します。

functions.phpは間違った記述があるとサイトが真っ白になるので、はじめにコピーをとっておきましょう!
/*__記事内にAdSense広告を表示させる__*/
function add_ad_before_h2($the_content) {
 //広告タグファイルを読み込む
 $ad = file_get_contents(get_template_directory_uri().'/ad/ad-article.php');
 /*
 //広告タグをここに記述する場合
 $ad = <<< EOF
   // ここにアドセンスを挿入
 EOF;
 */

 if (is_single()){//投稿ページ
  $h2 = '/<h2.+?<\/h2>/u';
  //$h2 = '/<h[2-3].+?<\/h[2-3]>/u'; //h2とh3タグを合わせてカウントする場合
	
  if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
    if ( $h2s[0] ) {//h2タグの有無をチェック
      if ( $h2s[0][1] ) {//2番目のH2タグ手前に広告を挿入
        $the_content  = str_replace($h2s[0][1], $ad.$h2s[0][1], $the_content);
      }
    if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
      $the_content  = str_replace($h2s[0][3], $ad.$h2s[0][3], $the_content);
    }
    if ( $h2s[0][5] ) {//6番目のH2見出し手前に広告を挿入
      $the_content  = str_replace($h2s[0][5], $ad.$h2s[0][5], $the_content);
    }
   }
  }
}return $the_content;
}
add_filter('the_content','add_ad_before_h2');

ここではアドセンス広告コードを別途 /ad/ ディレクトリ内のad-article.phpに書いて読み込んでます。読み込むファイルに合わせてパス・ファイル名変更してください。

functions.phpに直書きする場合は、その下の5〜10行目を参考ください(^^)
h2タグだけでなく、h2とh3タグを合わせてカウントしたい場合は13行目を14行目に変更すればOKです

参考にさせていただいたブログ:
本文記事1、2、3番目のH2見出し手前にアドセンスを挿入するWordPressカスタマイズ方法 『寝ログ』

目次の下にアドセンス広告を表示させるには

まずは前提として、目次の表示には『Table of Contents Plus (TOC)』というプラグインを使用しています。

方法として、プラグイン自体を編集する方法もありますが、アップデートで元に戻る可能性もありますし、変なところをいじるとインストール・設定し直しになるのであまりお勧めしません。
ですので、こちらも、functions.phpに記述していきます!


先の項目で、1番目のh2タグの手間に挿入すれば良いのでは?と試してみたのですが、目次の前に挿入されてしまうのです。ここがつまづきポイントでした。
TOCの設定にもよるのかもしれませんが、TOCも最初のh2タグの直前に挿入する使用なので、負けてしまうのだと思います。

そこで、TOCより後に広告用の関数を実行させれば良いのでは?と思い至りました。
最終行の「add_filter('the_content','add_ad_under_toc',100);」部分の数字が、実行順序なのです。

先の項目と記述自体は同じで、この順序のみ追加しています。
これで無事、見出しの後に広告が表示されました!
当サイトでは100で大丈夫でしたが、環境に合わせて数字調整してみてください(^^)

/*__目次の下にAdSense広告を表示させる__*/
function add_ad_under_toc($the_content) {
  //広告タグファイルを読み込む
  $ad = file_get_contents(get_template_directory_uri().'/ad/ad-under-toc.php');

  if (is_single()){//投稿ページ
    $h2 = '/<h2.+?<\/h2>/u';
    if ( preg_match_all( $h2, $the_content, $h2s )) {//本文中からH2見出しを探す
      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_under_toc',100);//100はこの関数を実行する順序

まとめ

以上、アドセンス広告を本文中と目次下に入れる方法でした!
記事が長くなると、2番目のh2タグだけでなく広告を入れたくなりますよね。
そういった時に参考にしていただければと思います(^^)