この投稿は、Google Adsense の広告を、WordPressの投稿本文中に挿入する方法を、説明させていただきます。H2見出しタグを見つけ、その前に広告を設置する方法です。応用すれば、様々な位置に広告が設置できるようになります!
Google Adsenseの広告コード
まずは、広告コードを取得します。Google Adsense管理画面の、「広告ユニット」にユニットを追加します。広告ユニットができると、コードを取得というところからコピーすることができます。
コードをコピーしたら、任意の場所に任意のファイル名で保存します。
僕の場合
/wp-content/themes/twentyseventeen-child/template-parts/adsense/adsense-one.php
H2見出しタグの前に設置する方法
functions.php に次の内容の関数群を書いて保存します。
この関数群が行なっているのは、htmlの見出し<h2>タグを見つけて、その直前に広告コードを挿入するという作業です。
<h2>を見つけるのに、正規表現を使っている理由は、例えば<h2 class=”クラス名”>のように、クラスなどが当ててあっても拾えるようにです。
define ( 'H2_TAG', '/<h2.*?>/i' ); function get_h2tag ( $the_content ) { if ( preg_match ( H2_TAG, $the_content, $h2tag ) ) { return $h2tag[0]; } } function add_ads_content ( $the_content ) { if ( is_single() ) { ob_start(); get_template_part('template-parts/adsense/adsense-one'); $ad_template = ob_get_clean(); $h2tag = get_h2tag ( $the_content ); if ( $h2tag ) { $count = 1; $the_content = preg_replace( H2_TAG, $ad_template.$h2tag, $the_content, 1 ); } } return $the_content; } add_filter( 'the_content', 'add_ads_content' );
- 関数の説明
- 22行目: フィルターフック
- the_contentは、投稿を読み込む時に実行される。それに、add_ads_sontentを同時に実行する。$the_contentは、WordPressのグローバル変数で、現在の投稿の中身。
- 15行目: if ( $h2tag )
- 投稿の中に、H2見出しタグがあるか無いかの判断。
- 1行目: H2タグ見出しを定義
- .*?は正規表現。「<h2」で始まり「>」で終わる文を最短で切り上げる。/はデリミタ。iは大文字と小文字を区別しない。
- 17行目: preg_replace()
- 投稿コンテンツの中からH2見出しタグを見つけ、その前に広告コードを挿入する処理をさせている。最後の引数が1なので、1番最初のH2見出しの前のみになる。
- 14行目: get_h2tag()
- 3行目から書いてあるget_h2tag関数を実行する。h2見出しタグを検索する。あれば、タグの文字列が戻り値として返される。
- 12行目: get_template_part()
- WordPressの関数。カッコ内のファイルを読み込む。11行目でバッファリングをONにしているので、メモリに一時保存される。13行目で、この内容が$ad_templateに代入される。
まとめ
今回は、Google Adsenseの広告を設置する方法をご紹介させていただきました。PHPの勉強にもなりますね!勉強すると色々できるようになってきて、ますます楽しくなります。
もっともっと勉強して、様々なことができるようになりたいです!