Go to top Go to bottom

個別ページとは、「投稿」の機能を使って投稿された記事を実際に閲覧するためのページです。テーマでは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を確認するとよいでしょう。

投稿のIDを確認する
投稿のIDを確認する

上の例では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()は添付ファイルのページかどうかを判定する条件分岐タグです。