WPtouchをAndroid 4.1 Jelly Beanに対応させてみる(その2)

2014/11/04

 「WPtouchをAndroid 4.1 Jelly Beanに対応させてみる」で、テンプレートを修正して対応させてみましたが、WPtouchはアップデートすると修正したテンプレート、スタイルシートが消えてしまうので、アップデート対策としてコード化してみました。

WPtouch on Android 4.1

 WPtouchは、HTTP_X_REQUESTED_WITHに値がセットされているかどうかでAjaxの判定をしているので、HTTP_X_REQUESTED_WITHにxmlhttprequest以外の値がセットされていた場合、HTTP_X_REQUESTED_WITHをunsetしてしまえばWPtouchのテンプレートを修正しなくてもAndroid 4.1で正常に表示されるようになります。少し強引な方法かもしれませんが、現状ではこの方法で影響を受けるのは元々正常に表示されないAndroid 4.1によるアクセスのみなので問題ないと思います。

 下記のコードを、function.phpなどに記述します。

1
2
3
4
5
6
7
8
function wptouch4jb() {
  global $wptouch_plugin;
  if(isset($wptouch_plugin) && $wptouch_plugin->applemobile === true && $wptouch_plugin->desired_view == 'mobile') {
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')
      unset($_SERVER['HTTP_X_REQUESTED_WITH']);
  }
}
add_action('init', 'wptouch4jb');

 これでWPtouchがアップデートされても、テンプレートを修正することなくAndroid 4.1でも表示されると思います。本当は、次回のアップデートできちんと対応してもらえると助かるんですけどね。

 プラグイン化してみましたので、必要な方はご利用ください。

-ITネタ
-, , ,