WordPressではJavaScriptではなくPHPでuserAgentを出し分ける

WordPressでのuserAgentの出し分け

WordPressでは主に以下のブラウザ判定用のグローバル変数が使用される。

JavaScriptでIE11の処理が必要な場合はIE用のjsファイルを作成して以下のようにfunctions.phpに追記すればIEのときのみ処理することができるので、使用しないコードが読み込まれることがなくなる。

ちなみに$is_iphoneはiPhoneではなくiPhone Safariの判定で間違いやすいので使用しないほうが良い。

  • $is_iphone (真偽値) – iPhone Safari
  • $is_chrome (真偽値) – Google Chrome
  • $is_safari (真偽値) – Safari
  • $is_opera (真偽値) – Opera
  • $is_gecko (真偽値) – FireFox
  • $is_edge (真偽値) – Microsoft Edge
  • $is_IE (真偽値) – Internet Explorer
function my_theme_script_ie() {
  global $is_IE;
  if ($is_IE) {
    wp_enqueue_script(
     'script-ie',
     get_theme_file_uri('script/ie.js'),
     array(),
     12345,
     true
   );
  }
}
add_action('wp_enqueue_scripts', 'my_theme_script_ie');

もしEdgeの場合は$is_IEを$is_edgeにする。

ブラウザ判定のグローバル変数は少なく、$is_iosや$is_androidは存在しないので作成しておくと良いだろう。

$is_ios = preg_match('/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT']);
$is_android = preg_match('/Android/', $_SERVER['HTTP_USER_AGENT']);