【WordPress】投稿本文の中に自動で広告を挿入する方法

【WordPress】投稿本文の中に自動で広告を挿入する方法 WordPress

WordPressでブログ運営をしていると、記事の途中に広告を自動で挿入したいケースがあります。手動で毎回挿入するのは手間ですが、フィルターフックを使えば自動で広告を埋め込むことができます。

スポンサーリンク

the_contentフィルターを活用する

WordPressでは投稿本文の出力時にthe_contentフィルターが適用されます。これを利用して、特定の位置に広告コードを挿入する処理を追加します。

広告を挿入するカスタム関数の作成

以下のコードをfunctions.phpに追加することで、投稿本文の2番目の段落の後に広告を自動挿入することができます。

functions.php:段落単位での広告自動挿入
function insert_ad_to_content($content) {
    if (is_single() && in_the_loop() && is_main_query()) {
        $ad_code = '<div class="ad-box">ここに広告コード</div>';
        $paragraphs = explode('</p>', $content);

        // 末尾の要素(最後の</p>より後ろの部分)を取り出しておく
        $last = array_pop($paragraphs);

        // 各段落の断片に</p>を個別に復元する
        foreach ($paragraphs as &$p) {
            $p .= '</p>';
        }
        unset($p);

        if (count($paragraphs) > 2) {
            // 2つ目の段落のあとに、独立した要素として広告を挿入
            array_splice($paragraphs, 2, 0, array($ad_code));
        }

        // 各断片は既に</p>を含んでいるので空文字で結合する
        $content = implode('', $paragraphs) . $last;
    }
    return $content;
}
add_filter('the_content', 'insert_ad_to_content');
explode→array_splice→implodeの組み合わせは不正なHTMLを生成する
explode('</p>', $content)で分割した配列にarray_splice()で広告コードを挿入したあと、単純にimplode('</p>', $paragraphs)で再結合すると、広告挿入条件(段落が3つ以上)を満たすたびに毎回確実に不正なHTMLが生成されます。implode()はすべての要素間に無条件で</p>を挿入するため、広告の<div>タグ(それ自体で完結している要素)の直後にも開始タグのない孤立した</p>が付いてしまうためです。上記コードでは、各段落の断片に</p>を個別に復元してから広告を独立した要素として挿入し、最後に空文字で結合することでこの問題を回避しています。

広告コードのカスタマイズ

$ad_codeの中には、Google AdSenseの広告タグやアフィリエイトバナーなどを自由に記述できます。CSSでスタイルを整えることで、見た目も調整可能です。

CSSで広告の見た目を整える

たとえば以下のようにCSSを記述すると、広告枠に枠線や余白をつけることができます。

style.css:広告枠のスタイル
.ad-box {
  margin: 30px 0;
  padding: 15px;
  border: 1px solid #ccc;
  text-align: center;
}

よくある質問(FAQ)

Q記事本文の指定段落目の後に広告コードを自動挿入するには?
Athe_contentフィルターでexplode(‘

‘, $content)で段落分割し、各断片に

を復元してから指定位置に広告HTMLを独立した要素として挿入し、空文字でimplodeします。単純にimplode(‘

‘, $parts)で結合すると、広告の要素の直後に孤立した

が生成されるので注意してください。

Q特定のカテゴリーやページには広告を表示しない設定は?
Athe_contentフィルターのコールバック内でin_category()・is_page()等で条件確認し、広告を挿入しない場合は元の$contentをそのまま返します。
QGoogleAdSenseのauto adsとWordPress手動挿入の組み合わせ方は?
AAuto adsを有効にしつつ、特定位置への手動挿入も追加できます。重複表示にはならずAuto Adsが最適な位置に追加します。広告の表示しすぎでユーザー体験を損なわないよう、AdSenseの広告配置に関するポリシーも確認してください。

まとめ

投稿本文に自動で広告を挿入することで、手動作業を省きながら広告収益を効率的に得ることができます。the_contentフィルターを活用すれば柔軟なカスタマイズも可能ですが、文字列分割で段落を操作する場合はHTMLの整合性が崩れないよう注意し、サイトの構成に応じて調整してみてください。