はじめに
本文中の広告は、デフォルトで最初の見出しH2の前に表示されます。
そこで、特定の見出しH2の前に広告を表示するように変更します。
この記事では、この方法について説明します。
実装手順
以下の手順で実装します。
- ラベルCocoon設定
表1に示す項目を設定します。
オンにした場合、設定した位置にも広告が表示されます。Cocoon設定 設定 大項目 項目 設定値 公告 広告の表示位置 本文中 オフ - ラベルPHPを追加
以下のコードをfunctions.phpに追加します。
例えば、見出しH2の3番目と5番目の前に広告が表示されます。add_filter('the_content', function ($content) { if (!is_singular()) { return $content; } // 見出しH2が本文中にない場合はそのまま返す $h2result = get_h2_included_in_body($content); if (!$h2result) { return $content; } // 広告を出力する見出しH2の番号を設定 $h2_indexes = [3, 5]; // 広告(AdSense)タグを取得 ob_start(); get_template_part_with_ad_format(get_ad_pos_content_middle_format(), 'ad-content-middle', is_ad_pos_content_middle_label_visible()); $ad_template = ob_get_clean(); $h2_count = 0; $content = preg_replace_callback(H2_REG, function ($matches) use ($ad_template, &$h2_count, $h2_indexes) { // H2出現数 $h2_count++; // 設定した見出しH2の番号の前に広告を挿入 if (in_array($h2_count, $h2_indexes)) { return $ad_template . PHP_EOL . PHP_EOL . $matches[0]; } return $matches[0]; }, $content); return $content; }, 10001);
参考:インデックスページの広告表示位置を変更する方法
インデックスページでは、デフォルトでエントリーカードが3枚ごとに広告が表示されます。
これを、例えば4枚おきに広告が表示されるように変更します。
実装手順
以下の手順で実装します。
- ラベルCocoon設定
表2に示す項目を設定します。
Cocoon設定 設定 大項目 項目 設定値 公告 広告の表示位置 ミドル オン - ラベルPHPを追加
以下のコードをfunctions.phpに追加します。
add_filter('is_index_middle_widget_visible', function ($is_visible, $count) { // 公告を出力する位置 $ad_display_after = 4; $is_visible = false; // エントリーカード表示数が指定した倍数の後ろに広告を表示 if ($count % $ad_display_after == 0) { $is_visible = true; } return $is_visible; }, 10, 2);
さいごに
今回紹介した方法を使えば、特定の見出しH2の前に広告を表示できます。
また、インデックスページで特定の枚数後に広告を表示することも可能です。
これにより、広告表示のカスタマイズがより柔軟にでき、ページ内容に応じた最適な広告表示が可能になります。

