052
個別ページ(記事のページ)かどうかを判定する
Library
個別ページとは、「投稿」の機能を使って投稿された記事を実際に閲覧するためのページです。テーマではsingle.phpなどのテンプレートが適用されます。
現在表示されているページが個別ページかどうかを判定するには、is_single()という条件分岐タグを使用します。
| 用例 |
|
|---|---|
| 関連 | |
| Codex |
個別ページかどうかを判定する
個別ページかどうかを判定するには、is_single()という条件分岐タグを使用します。
<?php if ( is_single() ) : ?>
<!-- 個別ページの場合の処理 -->
<?php endif; ?>たとえばヘッダーの処理をブログ投稿ページと個別ページで部分的に変えたい場合などに使います。
詳細な条件を指定して、特定の個別ページを判定する
is_single()は個別ページ全般でtrueを返しますが、第1引数を指定することで特定のページを判別することができます。
条件分岐タグ
is_single( $post )
個別ページかどうかを判定する。あるいは条件を追加することで特定の個別ページかどうかを確認する。
$post | 投稿のID、タイトル、スラッグ、またはそれらを含んだ配列を指定する |
|---|
たとえば次のようにして使います。
IDを用いて判定
if ( is_single( 165 ) ) {
// IDが165の投稿の場合の処理
}スラッグを用いて判定
if ( is_single( 'sunny-day-in-tokyo' ) ) {
// スラッグが'sunny-day-in-tokyo'の投稿の場合の処理
}投稿のタイトルを用いて判定
if ( is_single( '晴れの日の東京で' ) ) {
// 「晴れの日の東京で」というタイトルがつけられている投稿の場合の処理
}配列を用いれば、複数のページを判定することも可能です。
複数のIDを指定
if ( is_single( array( 165, 169, 172 ) ) ) {
// IDが165、169または172の投稿の場合の処理
}IDやスラッグを複合して指定
if ( is_single( array( 165, 'sunny-day-in-tokyo', '晴れの日の東京で' ) ) ) {
// IDが165、スラッグが'sunny-day-in-tokyo'またはタイトルが'晴れの日の東京で'の投稿の場合の処理
}投稿のIDは、投稿編集画面のURLを確認するとよいでしょう。

上の例ではlocalhost/minimalist/wp-admin/post.php?post=140&action=editとなっていますが、このpost=140が投稿のIDです。
is_single()は添付ファイルページでもtrueを返すことに注意
あまり使われないとは思いますが、WordPressには、添付ファイルをクリックしたときに添付ファイル用のテンプレート(たとえばattachment.php)を適用したページを表示する仕組みが用意されています。投稿画面で挿入された画像を[編集]し、[リンク先]を[添付ファイルのページ]にする操作で機能を確かめることができます。
is_single()条件分岐タグは、この添付ファイルのページでもtrueを返してしまいますので、「投稿」の個別ページのみを厳密に判定したい場合は、次のようにするとよいでしょう。
if ( is_single() && ! is_attachment() ) {
// 添付ファイルページを除く個別ページの場合の処理
}is_attachment()は添付ファイルのページかどうかを判定する条件分岐タグです。
Comment