投稿・固定ページ・添付ファイル・カスタム投稿タイプのどれかで、1 件を表示しているページかどうかを調べます。投稿タイプを渡すと、その種類だけに絞れます。
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_singular( string|string[] $post_types = '' ): bool
$post_types(省略できる):投稿タイプの名前(post・page・productなど)、またはその配列。
使い方の例
// 投稿と固定ページだけ、OGP の画像を出す
if ( is_singular( array( 'post', 'page' ) ) && has_post_thumbnail() ) {
echo '<meta property="og:image" content="' . esc_url( get_the_post_thumbnail_url( null, 'large' ) ) . '">';
}
is_single()・is_page() との違い
is_single():固定ページと添付ファイルを除いた 1 件のページ。is_page():固定ページだけ。is_singular():どれでも。迷ったら、これに投稿タイプを渡すのが分かりやすいです。
関連する関数
is_single()・is_page()is_post_type_archive():カスタム投稿タイプの一覧かget_post_type():今の投稿の投稿タイプ



