WP Mobile Detect 2.0 プラグイン の不具合?バグ? (mobile-detect.phpのバージョン2.8.22の影響)
現象
「WP Mobile Detect 2.0」 プラグインを使って「BlackBerry PlayBook」のタブレット端末の判断を「wpmd_is_tablet()」で行っているが、真にならない。 他のタブレットでは正常に判断できている。 確認はGoogle Chrome デベロッパーのエミュレート表示を使った。
結果
「WP Mobile Detect 2.0」 プラグインのバグ、又は内容の更新が遅れていると予測される。 自分で修正したいが、PHPは初心者レベルなので修正箇所が特定できない。
「WP Mobile Detect 2.0」 プラグインの自己責任アップデート
「WP Mobile Detect 2.0」 プラグインには以下の3つのファイルが入っている。
- readme.txt
- mobile-detect.php 2.8.13 これは古いみたい。
- wp-mobile-detect.php 2.0 Plugin URI: http://jes.se.com/wp-mobile-detect/
2つ目の mobile-detect.php の最新バージョン(2017/03/30時点) 2.8.25 がココからダウンロードできる。ダウンロードした Mobile-Detect-master.zip に入っている (Mobile_Detect.php) を WinMarge ツールでファイル比較した結果、かなりの判定テーブルが追加されている事が判った。 Mobile_Detect.php を
mobile-detect.php の
大文字から小文字とアンダーバーをハイフンに変更して、FTPを使ってプラグインの古いファイルと入れ替える。 が、「BlackBerry PlayBook」のタブレット端末の問題だけは解決できなかった。orz
WP Mobile Detect プラグインの機能
PHP の関数と同様に WordPress 動作環境先(サーバー側では無く、クライアント側)に関する情報を提供する為の関数を提供する。よって、当プラグインをインストールしただけでは全く何の影響も機能も働かない。 クライアント端末がデスクトップか、スマフォか、iPhoneか、使っているブラウザは何か、を判断し、それによって動作を変えたい時に使える。「Widget Logic」プラグインの「条件分岐タグ」にも使える。上級者向けのプラグインと言ってもいい。以下の関数の一覧を見れば、何が出来るかが予想できると思う。
WP Mobile Detect で使用できる関数一覧
PHPから使用できるプラグインの関数は wpmd_is_*** の型。
関数 | 機能 |
wpmd_is_notphone() | デスクトップPCやタブレット時に true |
wpmd_is_nottab() | デスクトップPCやスマートホン時に true |
wpmd_is_notdevice() | デスクトップ時のみに true |
wpmd_is_phone() | スマートホン時のみに true |
wpmd_is_tablet() | タブレット時のみに true |
wpmd_is_device() | スマートホンやタブレット時に true |
wpmd_is_ios() | iOS デバイス時に true |
wpmd_is_iphone() | iPhone 時に true |
wpmd_is_ipad() | iPad 時に true |
wpmd_is_android() | Android 時に true |
wpmd_is_windows_mobile() | Windows Mobile 時に true |
wpmd_is_blackberry() | ブラックベリー時に true |
wpmd_is_chrome_browser() | モバイル Chrome ブラウザ時に true |
wpmd_is_safari_browser() | モバイル Safari ブラウザ時に true |
wpmd_is_opera_browser() | モバイル Opera ブラウザ時に true |
wpmd_is_ie_browser() | モバイル Internet Explorer ブラウザ時に true |
wpmd_is_firefox_browser() | モバイル Firefox ブラウザ時に true |
BlackBerry PlayBook タブレットのユーザーエージェント 一覧
下記はココから引用した。OS 2.1.0は別環境でテストしたが、同じ値だったので下記内容は信頼できると予測している。
- OS 1.0 – According to RIM it’s Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+
- OS 2.0.0 Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.0.0; en-US) AppleWebKit/535.1+ (KHTML, like Gecko) Version/7.2.0.0 Safari/535.1+
- OS 2.0.1 Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.0.1; en-US) AppleWebKit/535.8+ (KHTML, like Gecko) Version/7.2.0.1 Safari/535.8+
- OS 2.1.0 Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+
使用したツール
- ユーザーエージェントを表示するサイト (User Agent String.Com)
備考
- header.php などに「useragents=(<?php echo getenv(‘HTTP_USER_AGENT’); ?>)」を入れると、表示している時のユーザーエージェントを画面で確認できる。 記事本文にはPHPコードを書いても動作しないで、注意が必要。 (セキュリティ強化か?