Coding Memos

try {coding} catch {questions}

Google Adsenseを記事内にPHPで入れる手法

昨日lazyloadに対応したsrcsetのいじり方を書いたついで、AdsenseWordpress記事内に入れる方法を書いてみようと思う。

収益化スペシャリストによると、リード文の下に記事内広告を入れるとさらに収益化が進むということで

<p>(リード文)</p>
<h2>
 初めのh2タグ
</h2>

という感じで記事フォーマットをルール化したとして、 初めのh2タグの上にAdsense広告入れる場合を考える。

スニペットから

これだけでもまあ使えると思う。もちろん、data-ad-clientなどはご自身のものを入れてもらうとして。

function addAdsense($content){
    $pos = strpos($content, '<h2>');
    $adsense = '<div>';
    $adsense .= '<ins class="adsbygoogle" data-ad-client="ca-pub-xxx" data-ad-slot="xxx"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>';
    $adsense .= '</div>';
    $content = substr_replace($content, $adsense, $pos, 0);
    return $content;
}

add_filter('the_content', 'addAdsense' , 1, 10);

簡単な解説

the_contentは記事内容を呼び出すフック。パラメータとしてもつのは$contentのみ。 で。まず、

strpos($content, <h2>) で記事内に出てくる初めてのh2タグの場所を見つけている。これを$posとして保持。 次に、このh2タグのまえに挿入したいAdsenseタグを$adsenseとして持っておく。

substr_replace()はシングルバイトの文字列位置めがけて、文字列を挿入できる関数。 なので、解釈すると、$contentの$pos文字目に$adsenseを挿入してってこと。

これで、adsenseタグは入る。

まぁjsでクライアント側から入れてもいいとはおもうけど、できればjsの負荷はなるべく減らしたいってことで。