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()
に統一で良かったんじゃね?
と改めて思いました。
どうしてこうなった!?
教えて、だれか。