WordPressでよく使う条件分岐関数のまとめです。
PC/タブレット/モバイルの条件分岐
is_mobile():モバイル端末判別関数を定義
あらかじめ、モバイル端末を判別する関数、is_mobile()
を定義しておきます。functions.phpに以下のコードを挿入します。
WordPressでデフォルトで使えるwp_is_mobile()
関数にはモバイル端末だけでなくタブレット端末が含まれます。
- wp_is_mobile():タブレット・モバイル(WordPressデフォルト関数)
- is_mobile()
:モバイル(オリジナル関数)
//タブレットをモバイルとしないモバイル判定関数 if ( !function_exists( 'is_mobile' ) ): //スマホ表示分岐 function is_mobile(){ if ( is_page_cache_enable() ) { return false; } if ( is_tablet_mobile() ) { return wp_is_mobile(); } $useragents = array( 'iPhone', // iPhone 'iPod', // iPod touch 'Android.*Mobile', // 1.5+ Android *** Only mobile 'Windows.*Phone', // *** Windows Phone '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 'Mobile.*Firefox', // Firefox OS 'Opera Mini', // Opera Mini Browser 'BB10', // BlackBerry 10 ); $pattern = '/'.implode('|', $useragents).'/i'; return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']); } endif;
PCの場合
if( !wp_is_mobile() ) { //PCの場合 }
タブレット・モバイルの場合
if( wp_is_mobile() ) { //モバイル・タブレットの場合 }
タブレットの場合
if( wp_is_mobile() && !is_mobile() ) { //タブレットの場合 }
モバイルの場合
if( is_mobile() ) { //モバイルの場合 }
PC/タブレット/モバイルの場合
if( !wp_is_mobile() ) { //PCの場合 } else { if( !is_mobile() ) { //タブレットの場合 } else { //モバイルの場合 } }
PC/タブレット・モバイルの場合
if( !wp_is_mobile() ) { //PCの場合 } else { //モバイル・タブレットの場合 }
iPad/iPhone/Android(タブレット/スマホ)の条件分岐
is_mobile():モバイル端末判別関数を定義
あらかじめ、モバイル端末を判別する関数、is_mobile()
を定義しておきます。functions.phpに以下のコードを挿入します。
WordPressでデフォルトで使えるwp_is_mobile()
関数にはモバイル端末だけでなくタブレット端末が含まれます。
- wp_is_mobile():タブレット・モバイル(WordPressデフォルト関数)
- is_mobile()
:モバイル(オリジナル関数)
//タブレットをモバイルとしないモバイル判定関数 if ( !function_exists( 'is_mobile' ) ): //スマホ表示分岐 function is_mobile(){ if ( is_page_cache_enable() ) { return false; } if ( is_tablet_mobile() ) { return wp_is_mobile(); } $useragents = array( 'iPhone', // iPhone 'iPod', // iPod touch 'Android.*Mobile', // 1.5+ Android *** Only mobile 'Windows.*Phone', // *** Windows Phone '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 'Mobile.*Firefox', // Firefox OS 'Opera Mini', // Opera Mini Browser 'BB10', // BlackBerry 10 ); $pattern = '/'.implode('|', $useragents).'/i'; return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']); } endif;
is_iOS():iOS端末判別関数を定義
あらかじめ、iOS端末を判別する関数is_iOS()
を定義しておきます。functions.phpに以下のコードを挿入します。
function is_ios() { $is_ipad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad'); global $is_iphone; if ($is_iphone || $is_ipad) { return true; } }
iPadの場合
if( wp_is_mobile() && is_iOS() ) { //iPadの場合 }
iPhoneの場合
if( is_iphone() ) { //iPhoneの場合 }
Android(タブレット・スマホ)の場合
if( wp_is_mobile() && !is_iOS() ) { //Android(タブレット・スマホ)の場合 }
Andriod(タブレット)の場合
if( wp_is_mobile() && !is_mobile() && !is_iOS() ) { //Android(タブレット)の場合 }
Andriod(スマホ)の場合
if( wp_is_mobile() && is_mobile() && !is_iOS() ) { //Android(スマホ)の場合 }
iPad/iPhone/Android(タブレット)/Android(スマホ)の場合
if( wp_is_mobile() ) { //タブレット・モバイルの場合 if( !is_mobile() ) { //タブレットの場合 if(is_iOS()) { //iPadの場合 } else { //Android(タブレット)の場合 } } else { //モバイルの場合 if(is_iphone()) { //iPhoneの場合 } else { //Android(スマホ)の場合 } } }
iPad/Android(タブレット)の場合
if( wp_is_mobile() && !is_mobile() ) { //タブレットの場合 if(is_iOS()) { //iPadの場合 } else { //Android(タブレット)の場合 } }
iPad/iPhoneの場合
if( wp_is_mobile() && is_iOS() ) { //タブレット・モバイルでiOSの場合 if(!is_iphone()) { //iPadの場合 } else { //iPhoneの場合 } }
Android(タブレット)/Android(スマホ)の場合
if( wp_is_mobile() && !is_iOS() ) { //タブレット・モバイルでAndroidの場合 if(!is_mobile()) { //Android(タブレット)の場合 } else { //Android(スマホ)の場合 } }
iPhone/Android(スマホ)の場合
if( is_mobile() ) { //モバイルの場合 if(is_iphone()) { //iPhoneの場合 } else { //Android(スマホ)の場合 } }
AMPページの条件分岐
is_amp():AMPページ判別関数を定義
あらかじめ、AMPページを判別するオリジナル関数、is_amp()
を定義しておきます。functions.phpに以下のコードを挿入します。
AMPページのURL構成がhttps://www.example.com/?amp=1
のように、URLパラメーターにamp=1
があるときにAMPページを表示する仕様になっている場合に使える判別関数です。
//AMP判別関数 if ( !function_exists( 'is_amp' ) ): function is_amp() { $is_amp = false; //URLにamp=1パラメータがあるとき$is_ampをtrueにする if($_GET['amp'] === '1'){ $is_amp = true; } return $is_amp; } endif;
AMPページの場合
if( is_amp() ) { //AMPページの場合 } else { //通常ページの場合 }
ページ種別の条件分岐
フロントページの場合
フロントページは、いわゆるトップページのことです。似たような関数にis_home()
がありますが、is_home()
は固定ページをフロントページに設定している場合、false
を返すので使いません。また、is_home()
はページネーションがある場合、2ページ目以降でもtrue
を返します。
if( is_front_page() ) { //フロントページの場合 }
投稿ページ・固定ページの場合
if( is_singular() ) { //投稿ページ・固定ページの場合 }
投稿ページの場合
if( is_single() ) { //投稿ページの場合 }
固定ページの場合
if( is_page() ) { //固定ページの場合 }
アーカイブページの場合
カテゴリー、タグ、カスタムタクソノミー、日時、投稿者などのアーカイブページ。
if( is_archive() ) { //アーカイブページの場合 }
カテゴリーアーカイブページの場合
if( is_category() ) { //カテゴリーアーカイブページの場合 }
タグアーカイブページの場合
if( is_tag() ) { //タグアーカイブページの場合 }
タクソノミーアーカイブページの場合
カテゴリーアーカイブページとタグアーカイブページではfalse
を返します。
if( is_tax() ) { //タクソノミーアーカイブページの場合 }
検索結果ページの場合
if( is_search() ) { //検索結果ページの場合 }
404エラーページの場合
if( is_404() ) { //404エラーページの場合 }
プレビューページの場合
if( is_preview() ) { //プレビューページの場合 }
管理画面の場合
if( is_admin() ) { //管理画面の場合 }
ログイン状態の場合
if( is_user_logged_in() ) { //プレビューページの場合 }