今のページが、投稿 1 件を表示するページかどうかを調べます。カスタム投稿タイプの 1 件のページでも true です。固定ページと添付ファイルのページでは false です。
is_single() と is_singular() は、名前がよく似ていますが別の関数です(誤字ではありません)。どのページで true になるかが違います。
| 開いているページ | is_single() | is_singular() |
|---|---|---|
| 投稿(ふつうの記事) | true | true |
| カスタム投稿タイプの 1 件(例:商品) | true | true |
| 固定ページ(会社概要・お問い合わせなど) | false | true |
| 添付ファイルのページ | false | true |
| 一覧・トップ・カテゴリ | false | false |
迷ったら:記事だけなら is_single()、固定ページも含めた 1 件のページ全部なら is_singular()、ふつうの投稿だけに絞るなら is_singular( 'post' ) です。
書き方
is_single( int|string|int[]|string[] $post = '' ): bool
$post(省略できる):投稿の ID・タイトル・スラッグ、またはその配列。渡すと「その投稿のページか」を調べます。
使い方の例
// 投稿のページだけ、本文の下に関連記事を出す
if ( is_single() ) {
get_template_part( 'parts/related-posts' );
}
// ID が 123 か、スラッグが about-us の投稿のときだけ
if ( is_single( array( 123, 'about-us' ) ) ) {
// ...
}
よくある間違い
- 「ふつうの投稿だけ」にしたいのに、カスタム投稿タイプでも
trueになる。投稿だけに絞るならis_singular( 'post' )を使います。 - 固定ページも含めたいときは
is_singular()です。
関連する関数
is_singular():投稿・固定ページ・添付ファイルの 1 件のページか(投稿タイプで絞れる)is_page():固定ページかis_home():投稿の一覧のページか



