is_singular()の使い方とis_single()との違いを徹底比較【WordPress条件分岐】

Contents
1. is_singular()とは?
is_singular()は、**「投稿・固定ページ・カスタム投稿タイプなど、個別ページ全般」**を判定するための条件分岐タグです。
つまり、「一覧ページ(アーカイブ)」ではなく、1件の投稿やページが表示されている状態かどうかを判断できます。
✅ 主な判定対象
- 投稿ページ(single.php)
- 固定ページ(page.php)
- カスタム投稿タイプ(single-〇〇.php)
2. is_singular()の基本構文と使い方
基本構文
<?php if ( is_singular() ) : ?>
<!-- 個別ページのときの処理 -->
<?php endif; ?>上記のように書くと、投稿・固定ページ・カスタム投稿ページで共通して処理を実行できます。
投稿タイプを指定する場合
<?php if ( is_singular( 'post' ) ) : ?>
<!-- 通常の投稿ページのみ -->
<?php endif; ?>複数の投稿タイプを指定することもできます👇
<?php if ( is_singular( array( 'post', 'news', 'works' ) ) ) : ?>
<!-- 投稿・お知らせ・制作実績ページ -->
<?php endif; ?>3. is_single()との違いを徹底比較
| 比較項目 | is_singular() | is_single() |
|---|---|---|
| 判定範囲 | 投稿・固定ページ・カスタム投稿すべて | 投稿ページ(post)のみ |
| 引数指定 | 投稿タイプ(配列OK) | 投稿ID・スラッグ・配列 |
| 使う場面 | 固定ページやカスタム投稿も含めたい場合 | 通常投稿ページ限定の場合 |
| 代表例 | is_singular('works') | is_single('my-post') |
👉 つまり、「is_singular() ⊃ is_single()」の関係になります。
4. is_singular()とis_single()の使い分け方
🔹 通常投稿だけ判定したいとき
if ( is_single() ) {
// 投稿ページ専用の処理
}🔹 固定ページやカスタム投稿も含めたいとき
if ( is_singular() ) {
// すべての個別ページで共通の処理
}🔹 カスタム投稿タイプのみ
if ( is_singular( 'works' ) ) {
// 制作実績ページ専用
}このように、**汎用性が高いのは is_singular()**です。
一方、投稿ページ限定の処理をしたい場合は is_single() が適しています。
5. 実用例:カスタム投稿タイプで条件分岐
たとえば、制作実績(works)というカスタム投稿タイプを作っている場合:
<?php if ( is_singular( 'works' ) ) : ?>
<div class="single-works__header">
<h1>制作実績の詳細</h1>
</div>
<?php endif; ?>さらに、ヘッダーやサイドバーで条件を切り替える例👇
<?php if ( is_singular() ) : ?>
<?php get_template_part( 'template-parts/sidebar-single' ); ?>
<?php else : ?>
<?php get_template_part( 'template-parts/sidebar-archive' ); ?>
<?php endif; ?>6. まとめ:どちらを使うべき?
| ケース | 使用する関数 |
|---|---|
| 投稿ページのみ判定 | is_single() |
| 固定ページ・カスタム投稿も含めて判定 | is_singular() |
| 特定の投稿タイプ(例:news, works)だけ | is_singular('news') |
まとめると:
迷ったら「is_singular()」を使えばOK。
より限定的に制御したいときは「is_single()」。
関連記事
- 🔗 WordPressのis_single()とは?基本の使い方と具体例を解説
- 🔗 is_front_page()とis_home()の違いを初心者向けにやさしく解説
- 🔗 WordPress初心者でも安心!functions.phpの使い方と注意点
- 🔗 home.phpとfront-page.phpの違いをやさしく解説
この記事のポイントまとめ
is_singular()は「個別ページ全般」を判定is_single()は「投稿ページのみ」is_singular('post')≒is_single()- 固定ページやカスタム投稿タイプも含めるなら
is_singular()が便利

