WordPress
WordPressの関数「is_single()」と「is_singular()」の違いを整理
- 最終更新日:
WordPressのページ種類を判別する関数の中でis_singleとis_singular()は似ていますが、あれ?となるような違いがあり、少しややこしいのでまとめておこうと思いました。
is_singular()使っておけば間違いないかと思いきや、is_single()でなければ分岐できない場合もあります。
is_single()とis_singular()ってどういう風に使うの?
例えばsidebar.phpのファイルに次のように記載する使い方が考えられます。
<?php
if ( is_single() ): ?>
<h2>人気記事</h2>
<?php if ( is_singular('blog') ): ?>
//処理1
<?php elseif ( is_singular('news') ): ?>
//処理2
<?php endif; ?>
<?php endif; ?>
このコードの意味としては、投稿ページの場合に「人気記事」というh2の見出しを出力し、その次に、カスタム投稿タイプのblogであれば処理1を、カスタム投稿タイプのnewsであれば処理2を実行、という内容となります。
is_single()とis_singular()の整理表
それぞれのできることは次の表の通りとなります。
| is_single() | is_singular() | ||
|---|---|---|---|
| 対象ページ 種類 |
固定ページ | ✖ | 〇 |
| アーカイブ ページ |
✖ | ✖ | |
| 投稿ページ | 〇 | 〇 | |
| 指定できる 引数 |
ページID | 〇 | ✖ |
| ページ スラッグ |
〇 | ✖ | |
| ページ タイトル |
〇 | ✖ | |
| 投稿 タイプ名 |
✖ | 〇 | |
is_single()とis_singular()の違い
主な違いを列挙すると次のような内容となります。
is_singular('blog')のように、カスタム投稿タイプ名を指定できるのはis_singularのみ。is_single(page_id)のように、is_single()はページID、ページスラッグ、ページタイトルを指定できるが、is_singular()は指定できないis_singular()はis_singular('page')とすることで固定ページを指定できる。ただし、is_page()があるので必然性はない。is_singular()はis_singular('post')とすることでカスタム投稿タイプではない、通常の投稿ページを指定できる。ただし、is_single()があるので必然性はない。
まとめ
うすうす思ってはいたんですが、
まとめてみた結果、
これis_single()に統一で良かったんじゃね?
と改めて思いました。
どうしてこうなった!?
教えて、だれか。