【WordPress】wp_is_mobile関数の変更の仕方について

  • 投稿 : 2018-08-21
add_filter( 'wp_is_mobile', function( $is_mobile ) {
  
  if (!empty($_SERVER['HTTP_USER_AGENT']) ) {
    $ua =mb_strtolower($_SERVER['HTTP_USER_AGENT']);

    //iPad
    if(strpos($ua, 'ipad') !== false){ 
      $is_mobile = false;
    }
    //kindle
    if(strpos($ua, 'kindle') !== false || strpos($ua, 'silk') !== false){
      $is_mobile = false;
    }
    //Androidタブレット
    if (strpos($ua, 'android') !== false && strpos($ua, 'mobile') === false) {
      $is_mobile = false;
    }
  }
    
    return $is_mobile;
});

add_filterを使用して、wp_is_mobile関数を書き換えることが可能です。
標準では、タブレットもモバイル扱いされてますが、上記のように書き換えると、タブレットはPC扱いになります。

上記は、テーマーのfunctions.phpに追記してください。

wp_is_mobile関数自体は、「wp-includes/vars.php」の中に書かれていて、「return apply_filters( 'wp_is_mobile', $is_mobile );」のように値を返してるので、add_filterをつかって、値を上書きすることが可能なのです。

独自関数を作ってもいいのですが、wp_is_mobile()をプラグインで使われているとか、テーマ内ですでにwp_is_mobile()を使われている場合は整合性が取れなくなる場合があるので、今回のような対応をしてみました。

参考

CloudFront 配下での User-Agent の判定 | Amimoto Help Center
[WordPress] wp_is_mobile() を CloudFront に対応させる · GitHub
Excluding iPad from wp_is_mobile function!



スポンサーリンク