WordPressのis_single()とは?基本の使い方と具体例を解説

はじめに

WordPressで特定の投稿ページだけに処理を加えたいとき、「is_single()」という関数が役立ちます。しかし、初心者の方にとっては「何に使えるの?」「どう書けばいいの?」といった疑問が浮かぶかもしれません。この記事では、is_single()の基本的な使い方から具体的な活用例まで、わかりやすく解説します。

is_single()とは?

is_single() は、現在表示されているページが「単一投稿ページ(single post)」かどうかを判定するWordPressの条件分岐タグです。

以下の図のように、単一投稿ページだけで true を返し、それ以外のページでは false になります。

is_single()がtrueになるページの図

図:is_single() が true になるのは「投稿ページ」のみ

つまり、投稿ページ(投稿タイプ:post)の詳細ページを表示しているときに true を返し、それ以外のアーカイブページや固定ページでは false になります。

もっと詳しく知りたい方は、WordPress公式ドキュメントをご覧ください。

基本的な使い方

if ( is_single() ) {
    // 単一投稿ページで実行したい処理
    echo 'これは投稿の詳細ページです';
}

特定の投稿だけを指定する方法

特定の投稿だけに条件を適用したい場合は、投稿ID・スラッグ・タイトルのいずれかを指定できます。

// 投稿IDを指定
if ( is_single(42) ) {
    echo '投稿ID 42 のページです';
}

// スラッグを指定
if ( is_single('my-post') ) {
    echo 'スラッグが my-post のページです';
}

// タイトルを指定
if ( is_single('こんにちは世界') ) {
    echo '「こんにちは世界」の投稿ページです';
}

よくある活用例

1. 投稿ページだけでCSSやJSを読み込む

if ( is_single() ) {
    wp_enqueue_style('single-style', get_template_directory_uri() . '/css/single.css');
}

2. 特定の投稿だけに広告を表示する

if ( is_single('campaign') ) {
    echo '<div class="ad">キャンペーン中!</div>';
}

3. テーマテンプレートの条件分岐で表示を変える

if ( is_single() ) {
    get_template_part('template-parts/content', 'single');
} else {
    get_template_part('template-parts/content', 'archive');
}

is_single()とis_singular()の違い

  • is_single() は「投稿(post)」のみを対象とします。
  • 一方、is_singular() は投稿(post)、固定ページ(page)、カスタム投稿タイプ(custom post type)など、すべての単一ページを対象にできます。
// すべての単一ページに適用したい場合
if ( is_singular() ) {
    echo 'これは単一ページです(投稿・固定ページ含む)';
}

注意点・よくあるミス

  • is_single() は一覧ページ(アーカイブやカテゴリーページなど)では false を返します。
  • 条件分岐を使用する際は、フック(例:wp_enqueue_scripts)のタイミングにも注意しましょう。

まとめ

is_single() は、WordPressで特定の投稿ページだけに処理を加えたいときにとても便利な関数です。基本を理解し、目的に応じてIDやスラッグを使い分けることで、より柔軟なテーマカスタマイズが可能になります。

投稿ページにだけ特別なレイアウトや広告を表示したいとき、ぜひ活用してみてください。

よくある質問(Q&A)

Q. is_single() はカテゴリーページでも true になりますか?
A. なりません。カテゴリーページはアーカイブページなので is_single()false を返します。

Q. カスタム投稿タイプにも使えますか?
A. 投稿タイプが「post」の場合はOKですが、カスタム投稿タイプも対象にしたい場合は is_singular() を使うのがおすすめです。

こちらの記事もおすすめ

is_front_page()とis_home()の違いを初心者向けにやさしく解説

WordPressでフロントページのURLを取得する方法

WordPressでキャッチフレーズを取得・表示する方法

WordPressでサイトタイトルを取得・出力する方法

WordPressで現在のテーマディレクトリまでのURLを取得する方法