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度クリアします。

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



サーバーのアップロードファイルの最大容量の確認と変更方法
MacVim-Kaoriyaのインストール方法
SourceTreeで環境設定の「カスタムアクション」「アップデート」「高度な設定」が選択できない
CSSやJavaScriptでスクロールバーの横幅を取得する方法
「EWWW Image Optimizer」を使ってWordPressをWebPに対応する方法
Dart Sassの変数の基本的な使い方|Dart Sass入門
WordPressって何なの?これからWordPressを勉強したい人がとりあえず知っておきたい事
スライドを簡単に実装できるJavaScriptライブラリ「Swiper」
WordPressで作成した記事をSlackでシェアしたときに、抜粋文が長く表示される場合の対処法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Macでダブルクォーテーションを入力すると自動で変換されてしまうのを無効にする
情報収集に最適!!RSSリーダー「Feedly」の登録から簡単な使い方まで
ランチャーアプリのAlfred3が便利だったのでPowerPackを購入しました!!これで快適なランチャー生活を
Vue.jsでtemplateタグ内にscriptやstyleタグを生成する方法|Tags with side effect are ignored
SafariでFacebookのPage Pluginに「リクエストを処理できませんでした」とダイアログが表示される問題
ExcelやSpreadsheetの文字入力時に、矢印キーを押すとセルが移動してしまう問題
Dashの時間と日付のフォーマット設定方法
Dropboxの「Macをバックアップ」機能でデスクトップや書類フォルダを同期する
Visual Studio Codeでショートカットキーを変更する方法
SourceTreeでマージ時に「fatal: You have not concluded your merge (MERGE_HEAD exists).」と表示される場合の対処法