このブログにGoogleアドセンスを貼ろうとした際に発生した問題です。
色々なサイトで「h2タグの前に貼ると収益がアップしやすい」ということを信じて自動的に広告が入るようにphpコードを挿入してみました。
コードは以下の通りです。
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
// 本文中にアドセンスコードを自動挿入する
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
function add_ads_before_h2($the_content) {
if (is_single()) {
$ads = <<< EOF
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- WordPress広告 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXXXXXXXXXXXXXXX"
data-ad-slot="XXXXXXXXXX"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
EOF;
$h2 = '/^.+?<\/h2>$/im';//H2見出しのパターン
if ( preg_match_all( $h2, $the_content, $h2s )) {
if ( $h2s[0] ) {
// 1つ目のh2見出しの上にアドセンス挿入
if ( $h2s[0][0] ) {
$the_content = str_replace($h2s[0][0], $ads.$h2s[0][0], $the_content);
}
// 3つ目のh2見出しの上にアドセンス挿入
if ( $h2s[0][2] ) {
$the_content = str_replace($h2s[0][2], $ads.$h2s[0][2], $the_content);
}
// 5つ目のh2見出しの上にアドセンス挿入
if ( $h2s[0][4] ) {
$the_content = str_replace($h2s[0][4], $ads.$h2s[0][4], $the_content);
}
// 7つ目のh2見出しの上にアドセンス挿入
if ( $h2s[0][6] ) {
$the_content = str_replace($h2s[0][6], $ads.$h2s[0][6], $the_content);
}
$the_content .= "<p></p>";
}
}
}
return $the_content;
}
add_filter('the_content','add_ads_before_h2');
で、やってみたところ、無事Googleアドセンスは表示されたのですが、何故か広告と見出しがくっついてしまう現象が発生しました。
↓こんな感じ。
最初にやってみたこと。
で、すぐ頭に出てきたのは、「h2の上にマージンを入れてみるか」でした。
margin-top: 15px;
もうお分かりの方もいらっしゃると思いますが、うまく行くはずありません。
h2タグはインライン要素なので上下マージンは無効なのです。
cssの基本中の基本ですね。
で結局どうしたか。
Googleアドセンスのスクリプトタグの最後に<p>タグを入れてみて解決(?)しました。
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- WordPress広告 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXXXXXXXXXXXXXXX"
data-ad-slot="XXXXXXXXXX"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<!-- ↓ここ -->
<p></p>
筆者はPHPもCSSもあまり得意ではない(iOSとかならわかるんだけどね)ので、根本的な解決でない気がしますが、しばらくこれで様子をみることにします。
以上
コメントを残す