【保存版】WordPress条件分岐タグまとめ|よく使う関数と使い方を一覧で解説

Contents
1. はじめに
WordPress テーマ開発で「ここはトップページだけデザインを変えたい」「特定の投稿タイプだけサイドバーを非表示にしたい」といった場面はよくあります。そんなときに大活躍するのが 条件分岐タグ (Conditional Tags) です。この記事では、中級者の方向けに 代表的な条件分岐タグを用途別に整理 し、コード例 と 落とし穴 まで網羅しました。ブックマークしておけば、テーマ編集のたびに検索する手間が省けます。
2. よく使う条件分岐タグ一覧(用途別)
🚩 ポイント:以下の h3 見出しをコピーして目次プラグイン用のアンカーにすると UX が上がります。
2‑1. 投稿・ページタイプの判別

この図のように、WordPressではページタイプごとに使う条件分岐タグが異なります。以下の表でそれぞれの関数の特徴を詳しく確認していきましょう。
タグ | ざっくり説明 | 使用例 |
---|---|---|
is_single() | 単一投稿ページかどうか | 投稿詳細ページで関連記事を表示 |
is_page() | 固定ページかどうか | 固定ページだけで CTA を変更 |
is_singular() | 投稿・固定・ CPT 全部を含む「単体表示」 | ビルドイン + CPT をまとめて判別 |
is_home() | ブログ一覧 (設定 > 表示で選択) | ホームだけアイキャッチを非表示 |
is_front_page() | サイトのフロントページ | トップだけヒーローヘッダーを表示 |
is_archive() | アーカイブ(一覧)ページ全般 | 一覧ページでグリッド幅を変更 |
is_single() とは?
is_single()
は、URL が単一投稿を指しているとき true
を返します。カテゴリーやタグの一覧ページでは false
になるので注意。
<?php if ( is_single() ) : ?>
<!-- 単一投稿ページ用の処理 -->
<?php endif; ?>
2‑2. カテゴリー・タグ・タクソノミー関連
タグ | ざっくり説明 | 使用例 |
---|---|---|
in_category() | 投稿が 指定カテゴリに属している | ニュースカテゴリだけラベル表示 |
has_category() | 投稿に カテゴリが付いているか | 無分類投稿に警告を出す |
has_tag() | 投稿に タグが付いているか | タグ未設定の投稿にバッジ |
is_category() | 現在のページが カテゴリアーカイブ | カテゴリページのタイトル装飾 |
is_tag() | 現在のページが タグアーカイブ | タグ一覧で説明文を差し替え |
is_tax() | カスタムタクソノミーを含む 汎用タクソノミ | CPT のタクソノミーで絞り込み |
<?php
// ニュースカテゴリ(ID: 3)に属する投稿なら
if ( in_category( 3 ) ) {
echo '<span class="badge">NEWS</span>';
}
?>
2‑3. 投稿タイプ・カスタム投稿タイプ関連
タグ | ざっくり説明 | 使用例 |
---|---|---|
is_post_type_archive() | CPT の アーカイブページ | イベント CPT 一覧ページを判別 |
is_singular('event') | CPT の 個別ページ | イベント詳細だけ地図を表示 |
2‑4. 固定ページや特定 ID の指定
is_page('about')
… スラッグis_page(42)
… IDis_single(array(1, 2, 3))
… 複数 ID の投稿
<?php if ( is_page(array('about', 'company')) ) : ?>
<!-- 会社情報関連ページ用 -->
<?php endif; ?>
2‑5. その他便利タグ
タグ | ざっくり説明 |
---|---|
is_user_logged_in() | ユーザーがログイン済みか |
current_user_can() | ユーザー権限を判定 |
is_search() | 検索結果ページか |
is_404() | 404 ページか |
3. コード実践例
3‑1. functions.php で条件分岐
wp_enqueue_scripts
フック内で、トップページだけ別の CSS を読み込む例です。
add_action( 'wp_enqueue_scripts', function() {
if ( is_front_page() ) {
wp_enqueue_style( 'top-only', get_theme_file_uri( 'css/top.css' ), [], '1.0' );
}
} );
3‑2. テンプレートファイルで条件分岐
single.php
の記事下部に 同一カテゴリの関連記事 を表示します。
<?php if ( have_posts() ) :
while ( have_posts() ) : the_post(); ?>
<article>…</article>
<?php // ── 同一カテゴリの関連記事 START
if ( in_category( 'news' ) ) {
get_template_part( 'template-parts/related-news' );
} else {
get_template_part( 'template-parts/related-default' );
}
?>
<?php endwhile;
endif; ?>
3‑3. 条件を組み合わせるテクニック
<?php
if ( ( is_single() || is_page() ) && ! is_front_page() ) {
// 投稿・固定ページ共通、かつトップページ以外
}
?>
4. よくある注意点・落とし穴
- 早すぎるタイミングで判定しない
- 例: init アクションより前。template_redirect 以降なら安心。
- is_page() と is_singular() の混同
- CPT を含むなら is_singular()、固定ページ限定なら is_page()。
- リライトルール変更後はパーマリンクを再保存 しないと 404 になることがある。
- キャッシュ系プラグインとの相性
- ページキャッシュが効いていると、ログイン判定などが想定外に動く。
5. まとめ
条件分岐タグを使いこなせば、1 ファイルのコード量を減らしつつ柔軟なレイアウト切り替え が可能になります。公式リファレンスをこまめにチェックし、テスト環境で挙動を確認 してから本番へ反映するのが安全です。