study

wordpressでショートコードを使って記事内でgoogle adsenseのスマホとPC表示を切り替える

2013.04.25.

wordpressでgoogleadosenseを利用する際にスマートフォンとパソコンで表示するバナーを変える方法とそれをショートコードにして投稿内で利用できるようにします。




[adsense]

やり方

テーマテンプレートのfunctions.phpに以下のコードをふたつ追加してみました。

function is_mobile(){
    $useragents = array(
        'iPhone', // iPhone
        'iPod', // iPod touch
        'Android', // 1.5+ Android
        'dream', // Pre 1.5 Android
        'CUPCAKE', // 1.5+ Android
        'blackberry9500', // Storm
        'blackberry9530', // Storm
        'blackberry9520', // Storm v2
        'blackberry9550', // Storm v2
        'blackberry9800', // Torch
        'webOS', // Palm Pre Experimental
        'incognito', // Other iPhone browser
        'webmate' // Other iPhone browser
    );
    $pattern = '/'.implode('|', $useragents).'/i';
    return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
}

上記のコードでユーザーエージェントを判別する引数を渡します。

function 任意の引数A() {
if(is_mobile()) {   
		return '
              (スマートフォン用のadsenseコード)
              '; 	
 } else { 
		return '
              (PC用のadsenseコード)
              '; 
 }
}
add_shortcode('ショートコード名', '任意の引数A');

続いて渡されたis_mobileという引数を利用してgoogle adsenseのコードの表示サイズを分岐させます。
  • シングルクォーテーション内がショートコードに差し込まれるコードになるので重要です。divなどをここですでに付けてしまってもいいかもしれません。
  • 任意の引数Aの部分はどんな名前でもかまいません。二箇所とも同じ名前にしてください
  • ショートコード名の部分に入れたコードを[ ]で囲むことで投稿内でadsenseが使えるようになります(例:[adsensecode])

あとはもう記事内の好きなところにショートコードで差し込んじゃってください。

少しずつphpでのwordpressカスタマイズに慣れてきたので今回やってみたのですが、もっとスマートに済ませることもできると思います。ご存知のかたは教えてくださると勉強になるのでありがたいです!

参考にさせて頂いた記事
レスポンシブデザインのWordPressユーザ注目。スマホ閲覧時に記事中のAdsense広告をはみ出させない方法 - Handmaid Future!さん