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

is_singular()とis_single()の違いを比較しながら解説するWordPress条件分岐タグのイメージ
WordPressのis_singular()とis_single()の違いを徹底比較|条件分岐タグの使い方をわかりやすく図解

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()」。

関連記事

この記事のポイントまとめ

  • is_singular()は「個別ページ全般」を判定
  • is_single()は「投稿ページのみ」
  • is_singular('post')is_single()
  • 固定ページやカスタム投稿タイプも含めるならis_singular()が便利