WordPressで記事中の見出し前にアドセンスを自動で挿入

今回は、WordPressで記事の見出し前にアドセンスを自動で挿入する方法を紹介します。

この記事で紹介するコードでは、以下の設定をすることが可能です。

  • どの見出しを含めるか(h2、h3、h4…)を設定
  • 最初にアドセンスが表示される見出しを設定
  • 見出し何個おきにアドセンスが表示されるかを設定

細かい設定ができるようにしたので、結構便利かと思います。

記事中の見出し前にアドセンスを自動挿入するコード

以下のコードを、子テーマのfunctions.phpにコピペしてください。

functions.phpは、「外観」→「テーマエディター」で編集ができます。念のため編集前にメモ帳などでバックアップを取っておくようにしましょう。

コード内にある「//ここにアドセンスのコードをコピペ」の所にアドセンスのコードをコピペしてください。

functions.php
// アドセンスの自動挿入
function add_ads_before_heading( $content ) {
$adsense = <<< EOF
//ここにアドセンスのコードをコピペ(この文章は消してください)
EOF;
  $count_h_list = array( 2 ); // h3を含みたいなら array( 2, 3 )と記述。
  $first_pos = 1; //最初にアドセンスを表示させたい見出し
  $freq_pos = 3; //見出し何個おきにアドセンスを表示させるか
  if( ! is_single() ) return;
  $post_id = get_the_ID();
  $count_h_list = implode( '|', $count_h_list );
  //全く同じ見出しがあるとバグるのでdata属性を入れてかぶらないようにする
  $heading_replace_regex = "/(<[hH][$count_h_list].*?)(>.*<\/[hH][$count_h_list]>)/";
  $num = 1;
  $content = preg_replace_callback(
    $heading_replace_regex,
    function( $matches ) use ( &$num ) {
      $result = $matches[1] . ' data-h-num="heading-' . $num . '" ' . $matches[2];
      $num++;
      return $result;
    },
    $content
  );
  $heading_regex = "/<[hH][$count_h_list].*?>.*<\/[hH][$count_h_list]>/";
  if ( preg_match_all( $heading_regex, $content, $headings ) ) {
    $first_pos = $first_pos - 1;
    $insert_post = $first_pos;
    $adcode = '<div class="adsense-wrap">' . $adsense . '</div>';
    if ( $headings[0] ) {
      $headings_array = $headings[0];
      $heading_num = count( $headings_array );
      for ( $i = 0; $i<$heading_num; $i++ ) {
        if ( $i === $insert_post ) {
          if ( $headings_array[$i] ) {
            $content  = str_replace($headings_array[$i], $adcode.$headings_array[$i], $content);
          }
          $insert_post += $freq_pos;
        }
      }
    }
  }
  
  return $content;
}
add_filter( 'the_content', 'add_ads_before_heading', 10 );
// アドセンスの自動挿入ここまで

コピペできたら保存をしてください。

コードの解説

コードの解説をしていきます。

どの見出しを含めるか

$count_h_list = array( 2 );

この部分を書き換えると、h2〜h6のどの見出しを含むかを設定できます。

例えば、h2、h3、h4を含めるなら、

$count_h_list = array( 2, 3, 4 );

と書き換えます。

どの見出しからアドセンス表示を開始するか

$first_pos = 1;

ここが1になっていれば、1番目の見出しにアドセンスが表示されます。

$first_pos = 2;

こうすると、2番目の見出しから表示されます。

見出し何個おきにアドセンスを表示させるか

$freq_pos = 3;

3になっている場合、見出し3個おきにアドセンスが表示されます。

上記で設定した見出しがカウントの対象になります。

まとめ

アドセンスが自動で挿入されれば、毎回記事中にアドセンスをコピーする手間が省けます。

コピペをミスったらサイトが見れなくなる可能性もあるので、バックアップを取って慎重に行ってください。


他にもこんな記事があります。