パソコンとスマホ(タブレット)で表示を変えたいときの、条件分岐の方法を見ていきます。
単純な表示・非表示であればdisplay:noneでもある程度制御はできますが、記事の表示件数などは変数で制御したほうが楽ですし、コードが二重になりません。
パソコンとスマホで表示を変えるための条件分岐
まず、基本的な条件分岐はこちら↓
1 2 3 4 5 |
if( wp_is_mobile() ){ //スマホ } else { //パソコン } |
ただ、wp_is_mobile()ですと、スマホとタブレットが同じ扱い=スマホの表示になってしまいます。
そのため、is_mobile()の内容を指定して、タブレットで見た時もパソコンと同じ表示で見れるようにします。
まず、functions.phpに以下を記述します↓
is_mobile()は、以下のデバイスのときだけにしてくださいね、という記述です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function is_mobile() { $useragents = array( 'iPhone', // iPhone 'iPod', // iPod touch '^(?=.*Android)(?=.*Mobile)', // 1.5+ Android 'dream', // Pre 1.5 Android 'CUPCAKE', // 1.5+ Android 'blackberry9500', // Storm 'blackberry9530', // Storm 'blackberry9520', // Storm v2 'blackberry9550', // Storm v2 'blackberry9800', // Torch 'webOS', // Palm Pre Experimental 'incognito', // Other iPhone browser 'webmate' // Other iPhone browser ); $pattern = '/'.implode('|', $useragents).'/i'; return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']); } |
こちらを指定したあとにis_mobile()で条件分岐をすればOKです。
1 2 3 4 5 |
if(is_mobile()){ //スマホの表示 }else{ //PCの表示 } |
パソコンとスマホで記事の表示件数を変える
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php if( is_mobile() ){ //スマホ $num = 6; } else { //PC $num = 12; } $args = array( 'post_type' => 'post', 'posts_per_page' => $num, ); $my_query = new WP_Query($args); if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?> //内容 <?php endwhile; ?> <?php else : ?> <p>記事はありません</p> <?php wp_reset_query();endif; ?> |
posts_per_page(表示件数)に入る数字を条件分岐させています。