is_single()とis_singular()の使い分け

カスタムテーマ制作中に is_single()is_singular() の使い所が度々こんがらがるので、きちんと整理してみました。

is_single() と is_singular() の概要

is_single()

投稿(post)およびカスタム投稿タイプのシングルページか否かを判別する際に使用します。パラメータを追加する際には記事のID、スラッグ、タイトルを指定します。

<?php if ( is_single() ): ?>
	個別投稿ページに表示する内容
<?php endif; ?>

<?php if ( is_single('7') ): ?>
	記事ID「7」の個別投稿ページに表示する内容
<?php endif; ?>

<?php if ( is_single( array('7','11','15') ) ): ?>
	複数の記事IDの個別投稿ページに表示する内容
<?php endif; ?>

(参考)関数リファレンス/is single

is_singular()

投稿(post)、カスタム投稿タイプ、固定ページ、添付ファイルのシングルページか否かを判別する際に使用します。パラメータ設定時には投稿タイプ(post、カスタム投稿タイプのスラッグ、page、attachment)を指定します。

<?php if ( is_singular() ): ?>
	投稿(post)およびカスタム投稿タイプのシングルページに表示する内容
<?php endif; ?>

<?php if ( is_singular( 'book' ) ): ?>
	カスタム投稿タイプ「book」のシングルページに表示する内容
<?php endif; ?>

<?php if ( is_singular( array(‘post’,’book’,’movie’,’music’) ) ): ?>
	投稿(post)および複数のカスタム投稿タイプのシングルページに表示する内容
<?php endif; ?>

(参考)関数リファレンス/is singular

実際の使用イメージ

実際のテーマ制作で次のように書くケースはあまり無いと思いますが、 is_single()is_singular() を条件分岐に用いると以下のようになります。

<?php if ( is_singular() ): ?>
	投稿、カスタム投稿タイプ、固定ページ、添付ファイルのシングルページに表示する内容
	<?php if ( is_single() ): ?>
		投稿およびカスタム投稿タイプのシングルページに表示する内容
		<?php if ( is_singular( ‘post’ ) ): ?>
			投稿(post)のシングルページに表示する内容
		<?php elseif ( is_singular( ‘book’ ) ): ?>
			カスタム投稿タイプ「book」のシングルページに表示する内容
		<?php else: ?>
			その他カスタム投稿タイプのシングルページに表示する内容
		<?php endif; ?>
	<?php elseif ( is_page() ): ?>
		固定ページのシングルページに表示する内容
	<?php elseif ( is_attachment() ): ?>
		添付ファイルのシングルページに表示する内容
	<?php endif; ?>
<?php endif; ?>

まとめ

総括すると、is_singular() が必要になるのは、カスタム投稿タイプを追加した際に、投稿(post)とカスタム投稿タイプのシングルページの表示を分岐させたいケースと考えて良いかと思います。

is_singular() is_single() is_singular(‘post’) →投稿(post)
is_singular($post_types) →カスタム投稿タイプ
is_page() →固定ページ
is_attachment() →添付ファイル

PR

DO WP 管理人