WordPress

WordPressの関数「is_single()」と「is_singular()」の違いを整理

WordPressのページ種類を判別する関数の中でis_singleis_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()に統一で良かったんじゃね?

と改めて思いました。

どうしてこうなった!?

教えて、だれか。

著者のイメージ画像

BringFlower
稲田 高洋(Takahiro Inada)

2003年から大手総合電機メーカーでUXデザインプロセスの研究、実践。UXデザイン専門家の育成プログラム開発。SEOにおいても重要なW3Cが定めるWeb標準仕様策定にウェブアクセシビリティの専門家として関わる。2010~2018年に人間中心設計専門家を保有、数年間ウェブアクセシビリティ基盤委員も務める。その後、不動産会社向けにSaaSを提供する企業の事業開発部で複数サービスを企画、ローンチ。CMSを提供し1000以上のサイトを分析。顧客サポート、サイト運営にも関わる。
2022年3月にBringFlowerを開業し、SEOコンサル、デザイン、ウェブ制作を一手に受ける。グッドデザイン賞4件、ドイツユニバーサルデザイン賞2件、米国IDEA賞1件の受賞歴あり。
プロフィール詳細