[WordPress]iPadからのアクセスを判定してiPad用のコンテンツを表示する方法

[WordPress]iPadからのアクセスを判定してiPad用のコンテンツを表示する方法

2013年7月17日
スポンサーリンク
[PR] このページではアフィリエイトプログラムを利用しています

iPad stand
iPad stand / Veronica Belmont

htmlとかphpとかわからなすぎてブログいじる時はいつも大変…どうもてとこん(@tetokon)です。

そんな私でも一応わからないなりに色々やっている訳ですが、今回はiPadからのアクセスを判定してiPad用の何かしらを表示したい時にどうすればできるかという方法です。

iPadからのアクセスはPC用のテーマが表示される…のですが…

このブログはPC用のテーマと、あとはモバイル用に、みんな大好きWPtouchというプラグインを使って表示を切り替えています。

iPadでアクセスした場合はPC用のテーマが表示されるのですが…

[Wordpress]iPadからのアクセスを判定してiPad用のコンテンツを表示する方法

iPadから見てみるとヘッダー下の広告がみょーーーんって右側に大幅にはみ出している訳ですよ。

iPadやその他のタブレットというシャレオツ端末何ぞ持っていないわたくしですからもう全然全く気づいていませんでした。ナンテコッタイ。

これはいかんと、流石にかっこ悪いと、iPadからのアクセスがほとんど無くても流石にこれは無いかなと思いまして、どげんかせんといかんと思ったわけです。

元々表示している広告を小さくするというのも考えましたが、ほとんどアクセスが無いiPadの方に合わせるのも「何だかなぁ」と脳内で阿藤快の声が再生されたのでiPadのアクセスには別のサイズの広告が出るようにしようと思ったのがまずはきっかけです。

fanctions.phpにiPad判定用の関数を追加

という訳でここからはどうやってiPadを判定するかのお話です。

まずはfanctions.phpにこんな関数を追加します。

[php]
function is_ipad(){
$useragents = array(
‘iPad’, // Apple iPad
);
$pattern = ‘/’.implode(‘|’, $useragents).’/i’;
return preg_match($pattern, $_SERVER[‘HTTP_USER_AGENT’]);
}
[/php]

これはWPtouchのwptouch.phpに書いてあるモバイルからのアクセスを判定してる関数を真似してiPad用に変えた感じです。

関数名はis_ipadとしてますが何でも構いません。自分がわかればいいです。

fanctions.phpにこの関数を追加したら準備完了。次は表示を切り替えたい部分にif文を書きます。

[php]
<?php if (is_ipad()) { ?>
/*ここにiPadで表示したいコード*/
<?php } else { ?>
/*ここにiPad意外で表示したいコード*/
<?php } ?>
[/php]

これでiPadからのアクセスだったらこっち、iPadじゃなかったらこっちという風に切り替えができます。こうやってiPadの時にはサイズの小さい広告が出るようにしました。

実際にアクセスして見ましょう。私はiPad持っていないのでXcodeにくっついているiOSシュミレーターを使って確認しています。

[Wordpress]iPadからのアクセスを判定してiPad用のコンテンツを表示する方法

広告がみょーーーんってならなくなりました。良かった良かった。

とりあえずこのブログに1番アクセスがあるタブレット端末がiPadなので(それでもPCとiPhoneに比べたらめちゃめちゃ少ない)iPadだけに対応しましたが、fanctions.phpに追加した関数にiPad以外の端末も追加して行けば他のにも対応できると思います。

ただそれをやろうとするとタブレットの数だけ名前を追加していかないといけないんですよね。それが結構めんどくさい…

他にもうまいやり方があるなら是非コメントやTwitterなどで教えて下さい。

あーiPad mini欲しいー。

そうそう、fanctions.phpいじる前にはバックアップをお忘れなく。

参考にしたページ:
Web サイトのスマートフォン最適化: UA 判別篇 – terkel.jp

この記事はこのアプリで更新しました↓
するぷろ for iPhone 1.500(¥350)
カテゴリ: ソーシャルネットワーキング, 仕事効率化
販売元: Gachatech – isshin(サイズ: 4.1 MB)