レスポンシブでないWordPressサイトのアドセンスをPCとスマホに分ける方法-1

アドセンスもスマホ対応しなければ・・・

2008年に作成して、そこそこ稼いでくれているアドセンスサイトがある。
25ページで毎月¥4000~5000。PVは1日2000~3000。
スマートフォンの本格的対応をしたい。
変更要件は次の通り。

【変更前】
・WordPressのテーマは独自作成(非レスポンシブ)
・プラグイン「Quick Adsense」でアドセンスを貼り付け
・プラグイン「WPtouch」でスマホ対応
・アドセンスはPCとスマホで同じものを表示(スマホで見るとはみ出してしまう)

【変更したい点】
・スマホではスマホにあったサイズのアドセンスを表示したい
・スマホでは記事の中ほどにもアドセンスを表示したい
・PCのアドセンスのサイズは変えたくない

Quick Adsense でのスマホ対応は?

最も簡単なのが「Quick Adsense」の設定でPC用コードとスマホ用コードに分けられることだが、そんな気の利いた機能はなーい。
(別のプラグインがあるかもしれないが、見つけられなかった)
「Quick Adsense」のコードを入れるボックスで場合分けできないかググってみたが、それも無理なようだ。

ということは「Quick Adsense」とはおさらばね。
独自テーマのテンプレに入れ込むしかないか。

single.php にアドセンスコードを挿入

<?php while ( have_posts() ) : the_post(); ?>

の前後にQuick Adsenseで指定していたアドセンスコードを入れてみる。

→PCではアドセンス表示OK
→スマホでは表示されない!

これはWPtouchのテンプレート内で使われている「wptouch_the_post()」が「the_post()」と同じく、投稿内容のみを取得する関数だからであろう。

ゆえに「wptouch_the_post()」の前後にもアドセンスコード(スマホ用)を入れてやればOKということになるのだが・・・

それだと文中のアドセンスはどうする?

文中のアドセンスに対応するために

これは結局、記事中の最適な場所に

<!--more-->

を挿入して、それをアドセンスに置き換える方法しかなさそうだ。

スマホ画面の1ビューにアドセンスは1つという規約だからね。
それは記事によっていちばんいい場所を指定してやるしかない。
記事数も今のところ少ないし。

WPtouchのfunctions.phpに

add_filter('the_content', '~');

などなどを追加するパターン。

待てよ、同じするなら

記事前後のアドセンスもadd_filterですればいいのでは?
functions.phpだけを修正すればいいだけになるではないか。
そうしよう。

ということで、スマホ対応としては
WPtouchのディフォルトテーマのfunctions.phpに、次のように追加した。

add_filter('the_content', 'AdsenseTag');
function AdsenseTag($content) { 
$adTags = <<< EOF
(スマホ用アドセンスコード 記事上用)
EOF;

$adTags2 = <<< EOF
(スマホ用アドセンスコード 記事中用)
EOF;

 $adTagsBottom = <<< EOF
<p style="border-bottom:1px dotted #CCC;"> </p>
(スマホ用アドセンスコード 記事下用)
EOF;

$content = preg_replace('/<span id="more-[0-9]+"><\/span>/', $adTags2, $content);
$content = str_replace('
 
', '', $content);
$content = str_replace('
', '
', $content);

 return $adTags . $content . $adTagsBottom;
}

但し、WPtouchをアップデートすると消えてしまうので、都度追加する必要あり。

とりあえずできたけど・・・

こうするならもっといいやり方がありそうだ。
それはまたあらためて。