WordPress で最初から用意されていて良く利用する投稿タイプに、投稿と固定ページがあります。その「投稿」の詳細ページを表示しているかどうかを判断する際に利用する関数が is_single()
です。
本記事では、その is_single()
関数を活用する上で必要な知識を徹底解説していきます。ぜひ最後までご覧ください。
is_single() 関数とは
クエリが記事詳細ページに対するものかどうかを判断します。
英語記事を読んでいると、ここで言っている「投稿詳細ページ」のことを「Single Post」と書いていることが多いです。
僕はネイティブではないので解釈が間違っているかもしれませんが、投稿全体(複数)を指す場合には Posts、投稿単体を指す場合には Single という単語が使われているようにです。
また、一見間違えやすい関数としては is_singular()
関数があります。こちらは別途記事で紹介しますが、固定ページなども含んできますので、使い方が変わってきます。
添付ファイルも含む分岐をする場合には注意が必要
is_single()
関数は、通常、添付ファイルページを表示した際にも true
を返します。また、添付ファイルページに関しては、場合によって is_page()
と is_attachment()
が同時に true
になることもあり、その際には is_single()
が false
になります。
ですので、添付ファイルページを含める場合には、
if ( is_attachment() || is_single() ) {
// do something
}
このように分岐すると良いでしょう。また、固定ページも含みたい場合には別途紹介する is_singular()
を使う必要があります。
パラメーター
$post | Post ID、タイトル、スラッグまたは配列 |
使い方
パラメーターにはさまざまな形で指定することができます。一つずつ見ていきましょう。
下で説明する投稿 ID、タイトル、スラッグの確認方法は下の画像を参考にしてください。
投稿 ID
特定の投稿の ID を指定することで分岐できます。
if ( is_single( 123 ) ) {
// post ID が 123 の投稿のみ処理を実行する
}
タイトル
投稿のタイトルを指定することで分岐できます。
if ( is_single( 'Hello world!' ) ) {
// 投稿タイトルが Hello world! の投稿のみ処理を実行する
}
スラッグ
投稿のスラッグを指定することで分岐できます。
if ( is_single( 'hello-world' ) ) {
// 投稿スラッグが hello-world の投稿のみ処理を実行する
}
配列
配列を用いることで、上記のパラメーターを活用して分岐することができます。
if ( is_single( array( 123, 456, 789 ) ) ) {
// 投稿 ID が 123
// または 456
// または 789 の投稿のみ処理を実行する
}
if ( is_single( array( 123, 'hello-world', '今日は空は青い' ) ) ) {
// 投稿 ID が 123
// または 投稿スラッグが hello-world
// または 投稿タイトルが「今日の空は青い」 の投稿のみ処理を実行する
}
まとめ
今回紹介した is_single()
関数も、WordPress クラシックテーマ開発ではよく利用される関数です。
添付ファイルページでも true
を返すということはあまり知られていないかもしれません。ぜひ使う際には頭に入れておきたい情報かもしれませんね。