WordPressのis_single()とは?基本の使い方と具体例をわかりやすく解説
WordPress
is_single()の基本構文や使い方、is_pageとの違いを初心者にもわかりやすく図解で解説。1. is_single()とは?
is_single() は、投稿ページ(投稿タイプ:post)の個別ページを判定するための条件分岐タグです。
つまり、ブログ記事1件の詳細ページを開いているときに「true」を返します。
if ( is_single() ) {
// 投稿ページのときに実行したい処理
}
🔍 主な用途
- 投稿ページだけに特定のデザインを適用する
- 投稿ページでスクリプトや広告を表示する
- 投稿IDやスラッグを指定して個別判定する
2. is_single()が使われるタイミング
WordPressのテンプレート階層では、
single.php が読み込まれる際にこの関数が「true」を返します。
| ページの種類 | is_single()の結果 |
|---|
| 投稿ページ(post) | ✅ true |
| 固定ページ(page) | ❌ false |
| カスタム投稿タイプ(例:news) | ❌ false(is_singularで判定) |
3. 基本的な書き方
例1:単純な条件分岐
<?php if ( is_single() ) : ?>
<div class="ad-banner">この記事限定の広告を表示</div>
<?php endif; ?>
例2:投稿IDを指定
<?php if ( is_single(123) ) : ?>
<p>この記事だけに特別なメッセージを表示!</p>
<?php endif; ?>
例3:スラッグで指定
<?php if ( is_single('my-first-post') ) : ?>
<p>「my-first-post」だけに表示される内容です。</p>
<?php endif; ?>
4. よくある具体例
🔸 投稿ページだけに特定CSSを読み込む
<?php
if ( is_single() ) {
wp_enqueue_style( 'single-style', get_template_directory_uri() . '/css/single.css' );
}
?>
🔸 投稿ページでだけ広告コードを挿入
<?php if ( is_single() ) : ?>
<div class="google-adsense">
<!-- 広告コードをここに挿入 -->
</div>
<?php endif; ?>
🔸 特定記事だけでスクリプトを読み込む
<?php
if ( is_single(array(12, 34, 56)) ) {
wp_enqueue_script( 'special-js', get_template_directory_uri() . '/js/special.js', array(), null, true );
}
?>
5. is_single() と似た関数の違い
| 関数名 | 判定対象 | 例 |
|---|
is_single() | 投稿ページ(post) | ブログ記事の詳細 |
is_page() | 固定ページ(page) | 会社概要ページなど |
is_singular() | すべての「個別ページ」 | 投稿・固定・カスタム投稿 |
💬 参考記事
6. 実践:複数条件を組み合わせる方法
🔸 投稿IDとカテゴリを組み合わせる
if ( is_single() && in_category('news') ) {
echo 'ニュースカテゴリの記事ページです';
}
🔸 投稿ページまたは特定固定ページに適用
if ( is_single() || is_page('contact') ) {
echo '投稿かお問い合わせページです';
}
7. よくある失敗パターンと注意点
| よくあるミス | 原因 | 解決策 |
|---|
| 固定ページでis_single()を使って反応しない | 固定ページは対象外 | is_page()を使用する |
| カスタム投稿でfalseになる | postタイプ限定だから | is_singular('news')を使用する |
| ループ外で条件が効かない | コンテキストが違う | ループ内またはテンプレート内で使用 |
8. まとめ
| ポイント | 内容 |
|---|
| 関数名 | is_single() |
| 判定対象 | 投稿ページ(post) |
| 主な使い方 | 投稿ページに限定して処理を行う |
| 注意点 | 固定ページ・カスタム投稿ではfalseになる |
9. 関連記事リンク