【2015年最終版】WordPressでスマホ判別is_mobile()カスタマイズ
2015年12月30日 WordPress is_mobile |コメント(2)
WordPressに元からあるwp_is_mobile関数はモバイル(スマホ・タブレット)かパソコンかで分岐させる関数です。
実際にサイトを作る場合、スマホだけ分岐させて、タブレットとパソコンは同じ表示ということが多いので新たにis_mobile関数を作ることが多いです。
私もnaifixさんの記事を参考に作ってましたが、こちらの記事の投稿日は2014/4/27と少し古くなってきているので新たに作成しなおしました。
phpコード
functions.phpに以下のコードを追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// スマホUA判別 function is_mobile(){ $useragents = array( 'iPhone', // iPhone 'Android.*Mobile', // 1.5+ Android *** Only mobile 'Windows.*Phone', // *** Windows Phone 'BB10', // BlackBerry 'Opera Mini', // Opera Mini 'Opera Mobi' // Omera Mobile ); $pattern = '/'.implode('|', $useragents).'/'; return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']); } |
変更部分
古いバージョンのものは削除しました。
iPodのユーザーエージェントにはiPhoneが含まれているので削除しました。
新しいBlackBerryのユーザーエージェントにはBB10が含まれているので追加しました。
古いやつにも対応させる場合には’blackberry’を追加してください。区切りのコンマを忘れずに。
本家のwp_is_mobileはOperaに対応してたのでOperaも追加しました。
新しいバージョンのOperaはOPRですが’iPhone’と’Android.*Mobile’で判断できそうです。
preg_matchじゃなくてstrposを使おう
PHPマニュアルに以下の記述がありました。
ある文字列が他の文字列内に含まれているかどうかを調べるためだけに preg_match() を使うのは避けた方が良いでしょう。 strpos() 関数を使うほうが速くなります。
お、そうなのか、ということでstrpos関数を使った書き方も置いときます。
functions.phpにはどっちかを追加してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function is_mobile(){ $ua = $_SERVER['HTTP_USER_AGENT']; if((strpos($ua, 'iPhone') !== false) || (strpos($ua, 'Android') !== false) && (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'Windows') !== false) && (strpos($ua, 'Phone') !== false) || (strpos($ua, 'BB10') !== false)) || (strpos($ua, 'Opera Mini') !== false) || (strpos($ua, 'Opera Mobi') !== false){ return true; }else{ return false; } } |
使い方
使い方は今までと同じです。
1 2 3 4 5 |
<?php if(is_mobile()): ?> <p>ここにスマホ用ページ</p> <?php else: ?> <p>ここにパソコン・タブレット用ページ</p> <?php endif; ?> |
- ご予約、無料相談など
お気軽にお問い合わせください。 - 090-3973-6373
- Webフォーム
2件のコメント
ホームページを全部ご自分で作成されたのですね。すごーい! 説明文を拝読しましたが 私の頭では何が何だかさっぱり??? わかったことは 松井先生が頭がいい!ってこと(*^_^*) わからなくても、こんな知らない世界を見せてくださって、ありがとう。
数学も得意なのかしら?
わたしは数学とか物理とかぜーんぜんダメなの。高校の物理のテストで15点とったことがあるくらいだから(^_^;)
コメントありがとうございます。
いえいえただただ趣味でいじってるだけですよ。
私もギターやら音楽関係はさっぱり分からないのと一緒で知らない世界はすごく見えるだけです(笑