
WordPressでページや記事の条件によって表示を切り替えたいとき、条件分岐タグ(テンプレートタグ)を使います。この記事では35個の条件分岐タグをコードサンプルと使い場面の説明付きでまとめています。チートシート(全タグ一覧表)もあるので、ブックマークしておくと便利です。
条件分岐の基本の書き方
とある条件によって設定や表示を変えたいときに使うのが条件分岐です。
条件分岐タグはWordPressのテーマファイル(PHPファイル)の中でif文と組み合わせて使います。header.php・footer.php・sidebar.php・functions.phpなどのPHPファイル内で使用します。記事の本文やウィジェット内には直接書けません。
基本のコードはこのような形。
<?php if(条件): ?>
<p>条件に当てはまった場合の処理・表示</p>
<?php elseif(条件): ?>
<p>条件に当てはまった場合の処理・表示</p>
<?php else: ?>
<p>設定した条件以外の場合の処理・表示</p>
<?php endif; ?>(条件) のところに条件分岐タグを記載します。
elseの省略・elseifで複数条件
条件に当てはまる場合だけ処理するときは else を省略できます。複数の条件を順に判定したい場合は elseif を使います。処理内容によって必要なコードを書いていきましょう。
<?php if ( 条件 ) : ?>
<p>条件に当てはまった場合のみ表示</p>
<?php endif; ?><?php if ( is_single() ) : ?>
<p>投稿ページの場合</p>
<?php elseif ( is_page() ) : ?>
<p>固定ページの場合</p>
<?php else : ?>
<p>それ以外の場合</p>
<?php endif; ?>否定・複数条件の組み合わせ
条件を否定する場合は ! を条件の前につけます。「その条件に当てはまらない場合」という指定になります。
<?php if ( !is_single() ) : ?>
<p>投稿ページ以外の場合</p>
<?php endif; ?>複数の条件を組み合わせる場合は &&(かつ)と ||(または)を使います。
// &&(かつ)
<?php if ( is_single() && !is_paged() ) : ?>
<p>投稿ページかつ1ページ目の場合</p>
<?php endif; ?>
// ||(または)
<?php if ( is_single() || is_page() ) : ?>
<p>投稿ページまたは固定ページの場合</p>
<?php endif; ?>特定のIDやスラッグを指定する
引数にIDやスラッグを指定すると、特定のページのみを対象にできます。複数指定する場合は array() を使います。
// 単一のIDを指定
<?php if ( is_single( 1 ) ) : ?>
<p>IDが1の投稿ページの場合</p>
<?php endif; ?>
// 単一のスラッグを指定
<?php if ( is_single( 'hello-world' ) ) : ?>
<p>スラッグが「hello-world」の投稿ページの場合</p>
<?php endif; ?>
// 複数のIDをまとめて指定(array()を使う)
<?php if ( is_single( array( 1, 5, 10 ) ) ) : ?>
<p>IDが1・5・10のいずれかの投稿ページの場合</p>
<?php endif; ?>トップページ
トップページの判定で使用されるのが、is_front_page() と is_home() です。この2つは判定方法に違いがあるので使用する場合は注意が必要です。
【設定 > 表示設定】の「ホームページの表示」のところで「固定ページ」を選択している場合、設定している項目によってがトップページだったりします。
もし意図した通りに条件分岐できない場合は、設定がどうなっているか見直してみましょう。
is_front_page()
【使い所】トップページにだけ大型バナーや特別なコンテンツを表示したいとき
サイトのトップページかどうかを判定します。「表示設定」で「固定ページ」をトップに設定している場合も true を返すため、設定に関わらずトップページを確実に判定できます。
<?php if ( is_front_page() ) : ?>
<p>トップページの場合に表示する内容</p>
<?php endif; ?>is_home()
【使い所】固定ページをトップに設定しているかどうかに関わらず、トップを判定したいとき
投稿アーカイブページ(記事一覧)かどうかを判定します。「表示設定」の内容によって動作が変わるため、is_front_page() と || で組み合わせて使います。
<?php if ( is_home() || is_front_page() ) : ?>
<p>トップページの場合に表示する内容</p>
<?php endif; ?>【参考】is_home() と is_front_page() の違い・対応表|WordPress | MaryCore
投稿・固定ページ
is_single()
【使い所】投稿ページにだけ関連記事や特定の広告を表示したいとき
投稿の個別ページかどうかを判定します。引数なしですべての投稿ページ、IDやスラッグを指定すると特定の投稿のみ判定できます。
// すべての投稿ページ
<?php if ( is_single() ) : ?>
<p>投稿ページの場合</p>
<?php endif; ?>
// IDを指定
<?php if ( is_single( 10 ) ) : ?>
<p>IDが10の投稿ページの場合</p>
<?php endif; ?>
// スラッグを指定
<?php if ( is_single( 'hello-world' ) ) : ?>
<p>スラッグが「hello-world」の投稿ページの場合</p>
<?php endif; ?>
// 複数指定
<?php if ( is_single( array( 10, 20, 30 ) ) ) : ?>
<p>IDが10・20・30のいずれかの投稿ページの場合</p>
<?php endif; ?>is_page()
【使い所】問い合わせページや会社概要ページでサイドバーを非表示にしたいとき
固定ページかどうかを判定します。引数にIDやスラッグを指定して特定の固定ページのみ判定することもできます。
// すべての固定ページ
<?php if ( is_page() ) : ?>
<p>固定ページの場合</p>
<?php endif; ?>
// スラッグを指定
<?php if ( is_page( 'about' ) ) : ?>
<p>スラッグが「about」の固定ページの場合</p>
<?php endif; ?>
// 複数指定
<?php if ( is_page( array( 'about', 'contact' ) ) ) : ?>
<p>「about」または「contact」の固定ページの場合</p>
<?php endif; ?>is_singular()
【使い所】すべての個別ページに共通のCTAを表示したいとき、特定のカスタム投稿の個別ページを判定したいとき
投稿・固定ページ・カスタム投稿の個別ページ全般を判定します。引数に投稿タイプ名を指定すると、特定のカスタム投稿タイプの個別ページのみ判定できます。
// 投稿・固定ページ・カスタム投稿すべての個別ページ
<?php if ( is_singular() ) : ?>
<p>いずれかの個別ページの場合</p>
<?php endif; ?>
// カスタム投稿タイプ「news」の個別ページ
<?php if ( is_singular( 'news' ) ) : ?>
<p>カスタム投稿「news」の個別ページの場合</p>
<?php endif; ?>
// 複数指定
<?php if ( is_singular( array( 'news', 'event' ) ) ) : ?>
<p>「news」または「event」の個別ページの場合</p>
<?php endif; ?>カスタム投稿、通常投稿問わず個別ページを指定したい場合は is_single() で判定できます。
しかし、is_single() の引数にカスタム投稿名を入れても判別されません。特定のカスタム投稿の個別記事を指定したい場合は is_singular() というテンプレートタグを使用する必要があります。
is_attachment()
メディアの添付ファイルページかどうかを判定します。
<?php if ( is_attachment() ) : ?>
<p>添付ファイルページの場合</p>
<?php endif; ?>添付ファイルページは、is_single() の判定範囲に含まれます。(is_attachment() が true のとき、is_single() も同時に true を返す)
なので is_single() だけで条件分岐すると、添付ファイルページにも意図せず適用されることがあります。添付ファイルページを除外したい場合、以下のように記述します。
<?php if ( is_single() && !is_attachment() ) : ?>is_page_template()
【使い所】特定のテンプレート使用時にヘッダー・フッターを非表示にしたいとき
特定のページテンプレートが使われているかどうかを判定します。引数にテンプレートファイル名を指定します。テーマ内のサブフォルダにある場合はフォルダ名も含めて記述します。
// テーマフォルダ直下のテンプレートファイル
<?php if ( is_page_template( 'page-lp.php' ) ) : ?>
<p>「page-lp.php」テンプレートを使用しているページの場合</p>
<?php endif; ?>
// サブフォルダにある場合
<?php if ( is_page_template( 'templates/page-lp.php' ) ) : ?>
<p>サブフォルダ内のテンプレートを使用しているページの場合</p>
<?php endif; ?>アーカイブ
is_archive()
【使い所】アーカイブページ全体に共通のレイアウトやパーツを適用したいとき
is_archive() はカテゴリーページやタグページの他、カスタム投稿やタクソノミーページ、日付・投稿者ごとのアーカイブページなど、
カテゴリー・タグ・著者・日付・カスタム投稿・カスタムタクソノミーなど、各種さまざまなアーカイブページが当てはまります。
<?php if ( is_attachment() ) : ?>
<p>添付ファイルページの場合</p>
<?php endif; ?>条件が広いため、特定のアーカイブのみ判定したい場合は後述の個別タグを使います。
is_category()
【使い所】特定のカテゴリーページにだけバナーや説明文を表示したいとき
カテゴリーアーカイブページかどうかを判定します。引数にIDやスラッグを指定すると特定のカテゴリーのみ判定できます。
// すべてのカテゴリーアーカイブ
<?php if ( is_category() ) : ?>
<p>カテゴリーアーカイブの場合</p>
<?php endif; ?>
// スラッグを指定
<?php if ( is_category( 'wordpress' ) ) : ?>
<p>スラッグが「wordpress」のカテゴリーの場合</p>
<?php endif; ?>
// 複数指定
<?php if ( is_category( array( 1, 2, 3 ) ) ) : ?>
<p>IDが1・2・3のいずれかのカテゴリーの場合</p>
<?php endif; ?>is_tag()
タグアーカイブページかどうかを判定します。引数にIDやスラッグを指定すると特定のタグのみ判定できます。
// すべてのタグアーカイブ
<?php if ( is_tag() ) : ?>
<p>タグアーカイブの場合</p>
<?php endif; ?>
// スラッグを指定
<?php if ( is_tag( 'wordpress' ) ) : ?>
<p>スラッグが「wordpress」のタグアーカイブの場合</p>
<?php endif; ?>is_author()
【使い所】著者プロフィールを著者アーカイブページにだけ表示したいとき
著者アーカイブページかどうかを判定します。引数にユーザーIDやニックネームを指定すると特定の著者のみ判定できます。
// すべての著者アーカイブ
<?php if ( is_author() ) : ?>
<p>著者アーカイブの場合</p>
<?php endif; ?>
// ユーザーIDを指定
<?php if ( is_author( 1 ) ) : ?>
<p>ユーザーIDが1の著者アーカイブの場合</p>
<?php endif; ?>is_date() / is_year() / is_month() / is_day()
日付アーカイブページかどうかを判定します。is_date() は年・月・日別アーカイブページのいずれかに当てはまれば true を返します。
個別に判定したい場合は is_year()・is_month()・is_day() を使います。
// 年・月・日別アーカイブ全体
<?php if ( is_date() ) : ?>
<p>日付アーカイブページの場合</p>
<?php endif; ?>
// 年別のみ
<?php if ( is_year() ) : ?>
<p>年別アーカイブの場合</p>
<?php endif; ?>
// 月別のみ
<?php if ( is_month() ) : ?>
<p>月別アーカイブの場合</p>
<?php endif; ?>
// 日別のみ
<?php if ( is_day() ) : ?>
<p>日別アーカイブの場合</p>
<?php endif; ?>is_paged()
【使い所】カテゴリーや一覧の1ページ目にだけ説明文を表示したいとき
アーカイブや記事一覧の2ページ目以降かどうかを判定します。!is_paged() とすることで1ページ目のみを対象にできます。is_page()(固定ページ)と名前が似ているので注意です。
// 2ページ目以降
<?php if ( is_paged() ) : ?>
<p>2ページ目以降の場合</p>
<?php endif; ?>
// 1ページ目のみ(!で否定)
<?php if ( !is_paged() ) : ?>
<p>1ページ目のみに表示する内容</p>
<?php endif; ?>
// カテゴリーの1ページ目のみ
<?php if ( is_category() && !is_paged() ) : ?>
<p>カテゴリーアーカイブの1ページ目のみに表示する内容</p>
<?php endif; ?>is_search()
【使い所】検索結果ページに検索キーワードや件数メッセージを表示したいとき
検索結果ページかどうかを判定します。検索キーワードは get_search_query() で取得できます。
<?php if ( is_search() ) : ?>
<p>「<?php echo get_search_query(); ?>」の検索結果</p>
<?php endif; ?>カスタム投稿・タクソノミー
is_post_type_archive()
投稿やカスタム投稿特定の投稿タイプの一覧を判定したい場合に使用します。
引数には「投稿タイプ名」を指定します。複数の投稿タイプの指定もできます。
<?php if(is_post_type_archive('custom_post_type_name')): ?>
<p>投稿タイプが「custom_post_type_name」の場合</p>
<?php endif; ?>
// 複数の投稿タイプ
<?php if(is_post_type_archive(array('post_type1', 'post_type2'))): ?>
<p>投稿タイプが「custom_post_type_name」の場合</p>
<?php endif; ?>is_tax()
カスタムタクソノミーのアーカイブページかどうかを判定します。第1引数にタクソノミー名、第2引数にタームIDやスラッグを指定できます。
// カスタムタクソノミー「news_category」のアーカイブ全体
<?php if ( is_tax( 'news_category' ) ) : ?>
<p>カスタムタクソノミー「news_category」のアーカイブページの場合</p>
<?php endif; ?>
// タームを指定
<?php if ( is_tax( 'news_category', 'press' ) ) : ?>
<p>「news_category」の「press」タームのアーカイブページの場合</p>
<?php endif; ?>記事の属性
このセクションでは「どのページか」ではなく、「その記事がどんな属性を持つか」で判定したい時に使えるタグをご紹介します。主にループ内やテンプレートファイルで使います。
in_category()
【使い所】特定カテゴリーの記事にだけアフィリエイトバナーや固有のCTAを表示したいとき
現在の投稿が特定のカテゴリーに属しているかどうかを判定します。is_category() がカテゴリーアーカイブページの判定、in_category() は投稿ページで使います。
// スラッグを指定
<?php if ( in_category( 'wordpress' ) ) : ?>
<p>「wordpress」カテゴリーに属する記事の場合</p>
<?php endif; ?>
// 複数指定
<?php if ( in_category( array( 1, 2, 3 ) ) ) : ?>
<p>IDが1・2・3のいずれかのカテゴリーに属する記事の場合</p>
<?php endif; ?>has_tag()
現在の投稿に特定のタグが付いているかどうかを判定します。引数なしで「タグが1つ以上ある」かどうかの判定もできます。
// タグが1つ以上設定されているか
<?php if ( has_tag() ) : ?>
<?php the_tags(); ?>
<?php endif; ?>
// 特定のタグを指定
<?php if ( has_tag( 'wordpress' ) ) : ?>
<p>「wordpress」タグが付いている記事の場合</p>
<?php endif; ?>has_term()
カスタムタクソノミーのタームが付いているかどうかを判定します。第2引数にタクソノミー名を指定します。デフォルトのカテゴリー(category)やタグ(post_tag)も指定できます。
// カスタムタクソノミーのターム
<?php if ( has_term( 'press', 'news_category' ) ) : ?>
<p>「news_category」に「press」タームがある記事の場合</p>
<?php endif; ?>
// デフォルトのカテゴリー・タグにも使える
<?php if ( has_term( 'wordpress', 'category' ) ) : ?>
<p>「wordpress」カテゴリーに属する記事の場合</p>
<?php endif; ?>is_object_in_term() でも判別できます。
is_object_in_term($post->ID, 'taxonomy_name','term_name')has_post_thumbnail()
【使い所】アイキャッチが未設定の場合にデフォルト画像やプレースホルダーを表示したいとき
投稿にアイキャッチ画像が設定されているかどうかを判定します。アイキャッチが未設定の場合にデフォルト画像を表示するときによく使います。
<?php if ( has_post_thumbnail() ) : ?>
<?php the_post_thumbnail( 'full' ); ?>
<?php else : ?>
<img src="<?php echo get_template_directory_uri(); ?>/images/no-image.png" alt="">
<?php endif; ?>has_excerpt()
【使い所】手動で入力された抜粋がある場合のみ表示し、本文の自動切り取りは避けたいとき
投稿に手動で抜粋が入力されているかどうかを判定します。the_excerpt() は抜粋がない場合に本文を自動で切り取りますが、has_excerpt() を使うと手動入力がある場合のみ表示を制御できます。
<?php if ( has_excerpt() ) : ?>
<?php the_excerpt(); ?>
<?php endif; ?>has_post_format()
投稿フォーマット(video・image・quote・gallery など)の種類で判定します。テーマが投稿フォーマットをサポートしている場合に使えます。
<?php if ( has_post_format( 'video' ) ) : ?>
<p>投稿フォーマットが「ビデオ」の場合</p>
<?php endif; ?>
<?php if ( has_post_format( 'gallery' ) ) : ?>
<p>投稿フォーマットが「ギャラリー」の場合</p>
<?php endif; ?>【投稿フォーマットについて】投稿フォーマット – サポートフォーラム – WordPress.org 日本語
ユーザー・環境
is_user_logged_in()
【使い所】会員向けコンテンツをログイン中のユーザーにだけ表示したいとき
ユーザーがWordPressにログイン中かどうかを判定します。会員向けコンテンツの表示制御などに活用できます。
<?php if ( is_user_logged_in() ) : ?>
<p>ログイン中のユーザー向けの内容</p>
<?php else : ?>
<p>未ログインユーザー向けの内容(ログインを促すなど)</p>
<?php endif; ?>wp_is_mobile()
【使い所】PCとスマホで表示するバナーや広告を切り替えたいとき
スマートフォン・タブレット(モバイル端末)からのアクセスかどうかを判定します。タブレットもモバイル扱いになります。
<?php if ( wp_is_mobile() ) : ?>
<p>モバイル端末向けの内容</p>
<?php else : ?>
<p>PC向けの内容</p>
<?php endif; ?>is_admin()
【使い所】特定のスクリプトを管理画面にだけ読み込みたいとき(または逆に一般画面のみ)
現在のページがWordPress管理画面(/wp-admin/ 以下)かどうかを判定します。functions.php でスクリプトやスタイルの読み込みを管理画面と一般画面で分けるときによく使います。
<?php if ( is_admin() ) : ?>
// 管理画面でのみ実行する処理
<?php else : ?>
// 一般画面でのみ実行する処理
<?php endif; ?>【メモ】
is_blog_admin() は is_admin() の別名で動作は同じです。
WordPressマルチサイト専用のタグに、is_user_admin() と is_network_admin() があります。この2つは通常のシングルサイトでは使用しません。
is_preview()
投稿のプレビュー表示中かどうかを判定します。プレビュー中に特定の要素を非表示にしたいときなどに使います。
<?php if ( is_preview() ) : ?>
<p>これはプレビュー表示です</p>
<?php endif; ?>その他
404ページ
【使い所】404ページに独自のデザインや「よく見られているページ」リンクを追加したいとき
404エラーページかどうかを判定します。
<?php if ( is_404() ) : ?>
<p>404ページ専用のコンテンツ</p>
<?php endif; ?>is_privacy_policy()
WordPressの設定(設定 → プライバシー)で指定したプライバシーポリシーページかどうかを判定します。
<?php if ( is_privacy_policy() ) : ?>
<p>プライバシーポリシーページの場合</p>
<?php endif; ?>comments_open()
【使い所】コメントが許可されている投稿にだけコメント欄を表示したいとき
投稿のコメントが許可されているかどうかを判定します。コメント機能を個別にオフにしている投稿への対応に使います。
<?php if ( comments_open() ) : ?>
<?php comments_template(); ?>
<?php endif; ?>post_password_required()
投稿がパスワード保護されているかどうかを判定します。パスワード保護ページのデザインカスタマイズなどに使います。
<?php if ( post_password_required() ) : ?>
<p>このコンテンツはパスワードで保護されています</p>
<?php else : ?>
<p>コンテンツ本文</p>
<?php endif; ?>has_nav_menu()
【使い所】メニューが設定されていない場合でもエラーを出さないようにしたいとき
指定したメニュー位置にナビゲーションメニューが登録されているかどうかを判定します。メニューが未設定でもエラーが出ないよう、wp_nav_menu() と組み合わせて使うのが定番です。
<?php if ( has_nav_menu( 'global-nav' ) ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'global-nav' ) ); ?>
<?php endif; ?>has_shortcode()
【使い所】ギャラリーショートコードがある記事にだけ専用CSSを読み込みたいとき
投稿本文に特定のショートコードが含まれているかどうかを判定します。ショートコードがある記事にだけ専用のCSSやスクリプトを読み込むときに使います。
<?php
global $post;
if ( has_shortcode( $post->post_content, 'gallery' ) ) : ?>
<p>ショートコード[gallery]が含まれている記事の場合</p>
<?php endif; ?>時刻・日時による条件分岐(PHP関数で自作)
【使い所】営業時間中だけ問い合わせボタンを表示したいとき、キャンペーン期間中だけバナーを出したいとき
WordPressには時刻・日時ベースの条件分岐タグは用意されていません。PHPの current_time() 関数を使って自作します。date() はサーバーのタイムゾーンに依存しますが、current_time() はWordPressの「設定 → 一般 → タイムゾーン」に従うため、こちらを使うのが安全です。
// 営業時間中(9:00〜18:00)だけ表示
<?php $hour = (int) current_time( 'H' ); ?>
<?php if ( $hour >= 9 && $hour < 18 ) : ?>
<p>営業時間中の表示(チャットボタンなど)</p>
<?php endif; ?>
// 期間限定バナー(日付指定)
<?php
$now = strtotime( current_time( 'Y-m-d H:i:s' ) );
$start = strtotime( '2025-12-01 00:00:00' );
$end = strtotime( '2025-12-25 23:59:59' );
?>
<?php if ( $now >= $start && $now <= $end ) : ?>
<p>期間限定バナー</p>
<?php endif; ?>チートシート:全35タグ一覧
この記事で紹介した条件分岐タグをまとめた一覧です。ブックマークして辞書代わりにお使いください。
| タグ | 説明 | カテゴリー | 公式ドキュメント |
|---|---|---|---|
is_front_page() | トップページ | トップページ | 公式 |
is_home() | 投稿アーカイブページ | トップページ | 公式 |
is_single() | 投稿の個別ページ | 投稿・固定ページ | 公式 |
is_page() | 固定ページ | 投稿・固定ページ | 公式 |
is_singular() | 個別ページ全般(投稿・固定・カスタム投稿) | 投稿・固定ページ | 公式 |
is_attachment() | 添付ファイルページ | 投稿・固定ページ | 公式 |
is_page_template() | 特定のページテンプレートが使われているか | 投稿・固定ページ | 公式 |
is_archive() | アーカイブページ全般 | アーカイブ | 公式 |
is_category() | カテゴリーアーカイブ | アーカイブ | 公式 |
is_tag() | タグアーカイブ | アーカイブ | 公式 |
is_author() | 著者アーカイブ | アーカイブ | 公式 |
is_date() | 日付アーカイブ全般 | アーカイブ | 公式 |
is_year() | 年別アーカイブ | アーカイブ | 公式 |
is_month() | 月別アーカイブ | アーカイブ | 公式 |
is_day() | 日別アーカイブ | アーカイブ | 公式 |
is_paged() | 2ページ目以降 | アーカイブ | 公式 |
is_search() | 検索結果ページ | アーカイブ | 公式 |
is_post_type_archive() | カスタム投稿タイプのアーカイブ | カスタム投稿 | 公式 |
is_tax() | カスタムタクソノミーのアーカイブ | カスタム投稿 | 公式 |
in_category() | 特定カテゴリーに属する記事か | 記事の属性 | 公式 |
has_tag() | 特定タグが付いている記事か | 記事の属性 | 公式 |
has_term() | 特定タームが付いている記事か | 記事の属性 | 公式 |
has_post_thumbnail() | アイキャッチが設定されているか | 記事の属性 | 公式 |
has_excerpt() | 抜粋が入力されているか | 記事の属性 | 公式 |
has_post_format() | 投稿フォーマットの種類 | 記事の属性 | 公式 |
is_user_logged_in() | ログイン中かどうか | ユーザー・環境 | 公式 |
wp_is_mobile() | モバイル端末かどうか | ユーザー・環境 | 公式 |
is_admin() | 管理画面かどうか | ユーザー・環境 | 公式 |
is_preview() | プレビュー中かどうか | ユーザー・環境 | 公式 |
is_404() | 404エラーページ | その他 | 公式 |
is_privacy_policy() | プライバシーポリシーページ | その他 | 公式 |
comments_open() | コメントが許可されているか | その他 | 公式 |
post_password_required() | パスワード保護されているか | その他 | 公式 |
has_nav_menu() | ナビゲーションメニューが設定されているか | その他 | 公式 |
has_shortcode() | 特定のショートコードが含まれているか | その他 | 公式 |
カテゴリー : WordPress