WordPressでよく使う条件分岐関数まとめ

WordPressで使える条件分岐関数まとめ

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() ) {
	//プレビューページの場合
}