本文中の広告を特定の見出しH2の前に表示する方法

Cocoonカスタマイズ集
この記事は約3分で読めます。
記事内に広告が含まれています。

はじめに

本文中の広告は、デフォルトで最初の見出し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の前に広告を表示できます。
また、インデックスページで特定の枚数後に広告を表示することも可能です。
これにより、広告表示のカスタマイズがより柔軟にでき、ページ内容に応じた最適な広告表示が可能になります。

タイトルとURLをコピーしました