この記事では、WordpressのPHPファイルの中で、スマホとPCをブラウザのユーザーエージェント情報から判別して、それぞれ別の表示内容や処理をおこなう、条件分岐の方法をご紹介します。
カスタマイザーやウィジェットなどが用意されていないカスタマイズを行うときに、PHPファイルに直接記述することがあると思います。
PHPファイルの中で、スマホとPCで表示内容を変えたいときの分岐方法で悩むことはありませんか?
今回、ウィジェットが用意されていない位置に、スマホとPCでサイズの違うGoogleアドセンスを貼り付けようとして、判別方法に悩みました。
いろいろ試した結果、うまくいく方法にたどり着きましたので、ご紹介します。
もくじ
スマホとPCで表示を分ける分岐方法
スマホとPCを判別する方法として、ブラウザのユーザーエージェント情報を読み取るWordpress関数があります。
wp_is_mobile()
このWordpres関数は、アクセスしてきたブラウザのユーザーエージェント情報が、スマホだった場合にTrueを返します。
この特徴を活かして、条件分岐させます。
wp_is_mobile()を使った条件分岐
wp_is_mobile()の使い方は、条件分岐のif関数と組み合わせて使います。
if ( wp_is_mobile() ) { 「スマホ」のときに表示・処理させたい内容 } else { 「PC」のときに表示・処理させたい内容 }
この書式が基本形となります。
これをWordpressのPHPファイルの中に記述する場合は、下記のように開始タグと終了タグを入れます。
<?php if ( wp_is_mobile() ) { 「スマホ」のときに表示・処理させたい内容 } else { 「PC」のときに表示・処理させたい内容 } ?>
これは、PHP言語は、HTMLのなかに書き込む言語のため、PHPスクリプトコード(命令文・プログラム)が記述される部分を、PCがPHP言語として判別・処理できるようにするために必要な基本文法です。
拡張子が.phpでも、実際にはHTML言語とPHP言語が混在して書かれていますので、この開始タグと終了タグは必ず入っています。
ここで特に注意が必要なのが、PHP言語部分に、かならず開始タグと終了タグが必要ということです。
条件分岐構文のif関数のなかで、表示・処理させたい内容がPHP以外の他言語だった場合、下記のようにPHP言語部分それぞれに開始タグと終了タグを入れる必要があります。
<?php if ( wp_is_mobile() ) { ?> 「スマホ」のときに表示・処理させたい内容:HTMLやJavascriptなど他言語のとき <?php } else { ?> 「PC」のときに表示・処理させたい内容:HTMLやJavascriptなど他言語のとき <?php } ?>
このようにif関数の一連の命令文の一部である、「 } 」や「 else 」などにも、そのあいだに他言語が入ったときは、それぞれ開始タグと終了タグで囲む必要があります。
まとめ
いかがでしたか?
WordPressのPHPファイル内で、「スマホ」と「PC」で表示や処理内容を条件分岐させる方法を書きました。
WordPress関数の「wp_is_mobile()」でブラウザのユーザーエージェント情報を読み取り、if関数を組み合わせることで条件分岐させる方法です。
注意点は、PHP言語の基本文法である「開始タグと終了タグ」の入れ方です。
ここを間違えると動きません。
最悪、画面真っ白になるので、初心者のときは頭も真っ白になってパニクります。