WordPressのwp_is_mobile()で条件分岐をするときは、キャッシュの設定に注意

WordPressにはwp_is_mobile()という条件分岐タグがあって、これを使うことでデバイスごとに表示の出し分けが可能です。
wp_is_mobile()でスマホからのアクセスを判断
wp_is_mobile()という条件分岐タグを使うと、スマホからアクセスしているときにtrue、それ以外の場合はfalseが返ってきます。
具体的な使い方はPHPのif文で下記のように書くことで、スマホとPCで表示するコードを出し分けられます。
<?php if( wp_is_mobile() ): ?>
// スマホで表示するコード
<?php else: ?>
// PCで表示するコード
<?php endif; ?>使用するときの注意点としては、「画面サイズではなくあくまでデバイスでの分岐がされる」ことが挙げられます。
例えばPCのブラウザサイズを小さくしてスマホサイズにしても、条件分岐としては「PCから見ている」という判定になるため、PCで表示するコードが表示されます。
スマホでキャッシュを使うと分岐がうまくできない場合がある
ここからが本題ですが、プラグインの設定などでスマホでもキャッシュを有効にしていると、このwp_is_mobile()による条件分岐がうまく動作しないときがあります。
そもそもプラグインなどで設定するキャッシュは、毎回アクセスするたびにPHPで処理をしていると時間がかかってしまうので、すでに処理したデータを残しておいて、それが見つかればデータを優先して返すというものです。
そのため、wp_is_mobile()を使ったPHPによる条件分岐が使われず、スマホで見たときもサーバーに残っているPC用のコードが返ってきてしまう恐れがあります。
スマホではキャッシュを使わないようにする
ちゃんとPHPによる条件分岐が動くようにするためには、スマホではキャッシュを使わないようにする必要があります。
例えば、WordPressのキャッシュ系プラグインで有名な「WP Fasetest Cache」を使っている場合は、設定画面に「モバイルユーザーに対してキャッシュを表示しない」という項目があるのでそこにチェックを入れて、キャッシュを1度クリアします。

これでスマホを見れば、ちゃんと条件分岐されて表示されているはずです。



HTTP/2が設定されているはずなのに、ブラウザ上でHTTP/1.1になってしまう場合はセキュリティソフトを確認
スクロール時に表示領域に画面がくっつくようになる処理をCSSだけで実現する「scroll-snap」
Visual Studio Codeの文字サイズやタブサイズの設定方法
Visual Studio Codeの基本|概要やインストールから日本語化など最低限の設定方法
SafariでFacebookのPage Pluginに「リクエストを処理できませんでした」とダイアログが表示される問題
Visual Studio Codeの設定を複数の端末間で同期する「Settings Sync」機能の使い方
CSSだけで画像の比率を保ってトリミングできる「object-fit」
gulpでPostCSSを使う方法
JavaScriptのテンプレートリテラル内で条件分岐を行う方法
HTMLのpattern属性を使ってフォームのバリデーションチェックを行う方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Alfred 4で使えるシステムコマンドのまとめ
Vue CLIでの画像パスの指定方法・配置場所まとめ
Alfredで複数のアプリケーションを一括で起動するWorkflowの作成方法
人前でデモをするための設定や、始める前のチェックリスト
Path Finderでのカラム表示とリスト表示の切り替え
WordPressのカスタムメニューでは、内部リンクに対してカスタムリンクは使わない!
CSS Nite in Kobe, vol.41「最新ネット広告の打ち手を学ぶ1dayレッスン 〜レスポンシブ検索広告からAmazon広告、ストーリーまで」に参加してきました
iStat Menusの「センサー」アイコン表示と設定
コーディングで「スペース」と「タブ」のどちらを使えばいいのか?