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

WordPress

 「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などに記述します。

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でも表示されると思います。本当は、次回のアップデートできちんと対応してもらえると助かるんですけどね。

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

コメント

  1. とまと より:

    どうしてなんだろうとずっと悩んでました。
    大変大変助かります!
    ありがとうございます。

  2. しょーた より:

    お役に立てて何よりです^^

  3. mezzo forte より:

    最近 HTC J One HTL22 に換えたら何故かブログのCSSが吹っ飛んでいたので、検索したらこちらにたどり着きました。
    早速プラグインを試させていただき、労せずして解決いたしました。
    ありがとうございました!

  4. しょーた より:

    コメントありがとうございます。
    お役に立てて何よりです。

  5. 伊藤雄介 より:

    サイトを運営しておきながらスマホはずっとAndroid4.0でチェックしていたので今まで気が付かなかった自分が恥ずかしいですが、たまたま4.0の機種に変更しようかなと実機をショップで触ってサイトにアクセスした時にヘッダーとフッターがなくレイアウトも崩れていてびっくり。あわてて検索してこのサイトを知り対応させていただきました。
    ありがとうございました。
    ただ、手元に4.1以上の実機がないので正しく表示されているかはまだ不明ですが・・・。

  6. しょーた より:

    コメントありがとうございます。
    環境(端末)によるところなので、なかなか気付きにくいものです。
    不具合が解消されているようであれば幸いです^^

タイトルとURLをコピーしました