ユーザーエージェントでスマートフォンを判別してCSSを切り分けたり別テーマをインクルードしたりしても、スマートフォンユーザーの中にはPCサイトを見たい人もいると思われます。
そこでURL引数とクッキーを使ってPCサイトとスマートフォンサイトを切り分ける方法を考えました。どちらを見せるかをクッキーにも保存するので「次のページにいったらスマフォサイトに戻ってる」ということもありません。
functions.phpに以下のように書いておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php function is_smart_phone() { return (preg_match( '/android.+mobile/i', $_SERVER['HTTP_USER_AGENT'] ) || preg_match( '/iphone/i', $_SERVER['HTTP_USER_AGENT'] )) && !((isset($_GET["pc"]) || isset($_COOKIE["pcsite"])) && !isset($_GET["sp"])); } function pcflag(){ if(isset($_GET["pc"])){ $expire = time() + 7 * 24 * 3600; setcookie('pcsite', '1', $expire); } else if(isset($_GET["sp"])){ setcookie('pcsite', '', time()-3600); } } add_action("init","pcflag"); ?> |
ユーザーエージェントに「andoroid」と「mobile」か「iphone」が含まれていて、
かつ
URLに「?pc」がついていないかクッキーに「pcsite」が保存されていないかURLに「?sp」がついている
ときにスマートフォンと見なします。(is_smart_phone()がtrueを返す)
※日本語で書いたほうがややこしいですね。。。。
また、スマートフォンであっても「?pc」にアクセスした場合はクッキーに「pcsite」というキーを保存し、このキーがある場合はis_smart_phone()はfalseを返すようにします。
そして上記「pcsite」のクッキーがある場合に「?sp」へアクセスした場合はクッキーを削除します。
実際に使用する場合は以下のようなリンクをフッターにでも表示させておくといいでしょう。
1 2 3 4 5 6 7 |
<!-- リンクに?pcをつけるとPCサイトとみなす --> <?php if(is_smart_phone()) { ?> <a href="<?php the_permalink(); ?>?pc">PCサイトを見る</a> <?php } else { ?> <!-- リンクに?spをつけるとスマートフォンサイトとみなす --> <a href="<?php the_permalink(); ?>?sp">PCサイトを見る</a> <?php } ?> |
ADs
コメントはまだありません。