wordpressでのスマホ対応webサイト制作・wpプラグイン・PHPプログラム・SNS活用・ 動画・bgmやテーマ曲アレンジまで考えるコラム!

【WordPress条件分岐】is_singleとis_singularって違うの?→idやスラッグ指定、投稿タイプ指定の面で違いが

      2020/10/26

こんにちは、管理人@SS_mshpです。

今回は、WPの条件分岐などに使うファンクションで、名前が超似ているものを取り上げます(is_singleとis_singular)。これも、『名前が似ててややこしいけど挙動が違うというパターン』です。以前もこのサイトに書いた『is_home()とis_front_page()は挙動が違う』みたいなものです。さっそく、確認してみましょう。

is_singleはどのように使う?活用方法は?

通常は、個別の投稿記事を判定するのにつかう


管理人は『is_page()』を使うことが多いんですけど、この機会に『is_single()』も挙動をまとめておきたいと思います。通常はこんな感じで、条件分岐に使います。『:>』で終わっているのは『phpのコロン構文』で、間にhtmlやテキスト書くときは便利です。『echo 引用符 文字列 引用符 文字列結合演算子 出力したい変数 ;』みたいに書かなくて良いからです。
試しにこのサイトのフッターに出力させてみます。


『トップページ・カテゴリ/タグのアーカイブ・固定ページ』では表示しないけど『個別の投稿ページ』で表示させることができます。このような感じで条件分岐させるときに使われます。

このほか、『mp3など添付ファイルのページ』でも条件判定がtrueになるので、細かく制御したい場合は、添付ファイルページ判定の『is_attachment』を組み合わせましょう。

投稿idを指定して、個別に出力させることも可能


is_single()のカッコの中には、パラメーターを指定することができます(配列arrayにして複数入れるのもok)。使用頻度が高そうなものは、『記事のid番号を指定して条件分岐』でしょうか。例えば、こんなふうに『id1番』を指定すると・・・


『id1番記事のときだけ表示』ができます。特定の記事だけ広告やスクリプト出力みたいな用途には便利です。カテゴリで一括指定のときは『in_category』を使いましょう。

スラッグ・タイトルでも指定できる


そのほか、スラッグでも指定できます。引用符でくくってスラッグを記載。


ただし、『id違いで同じスラッグの記事が複数ある場合』は、そのすべてに出てしまうので、個別にやりたいときはid指定がよいでしょう。

is_singleでは、カスタム投稿タイプなど、投稿タイプの指定は不可能


ちょっと他のテストもしてみましょうか。どっかで見た『投稿タイプ』の指定。以前このサイトに『wp-webという別の投稿タイプ』を作っておいたので、それを使ってみます。


そして、is_single()のカッコの中に投稿タイプwp-webを指定してみます。


これは出ません(id/スラッグで判定すれば、この記事に適応させることはできます)。
投稿タイプごとの切り替えができると、『プラグインCustom Post Type UI(カスタム投稿タイプを設定するプラグイン)』などを使っている場合有効ですが、方法はないのでしょうか。

is_singularも似た挙動だが、『投稿タイプ指定』ができるという点はポイント

通常は、個別投稿・固定ページ・添付で判定


次は『is_singular』の挙動をチェックしてみます。


codexでしらべたところ、is_singularがtrueになる条件として『is_single()、is_page()、is_attachment()のいずれかがtrue』というのがあるそうです。このように『個別投稿・固定ページ・添付ファイルのページ』でtrueとなり、表示されます。この用途ならあまり使わないでしょう(笑)

カスタム投稿タイプのスラッグ指定して判定できた


次は『is_singular()』のカッコ内に、パラメーターとして『カスタム投稿タイプ』を指定してみます。先ほど使ったカスタム投稿『wp-web』のスラッグを記載。


投稿タイプによる判定ができました。タイプごとに表示を切り替えたいときはコレを使っても良さそうです。
なお、投稿タイプ指定ということで、固定ページ判定に『is_singular('page')』と書いてもよいのですが、すでにWPには『is_page』で固定ページを判定するファンクションがあるので、カスタム投稿専用に使っていく感じになりそうです。

また、『is_singular()』のカッコ内に『1』と書いても、id1番の記事で判定されるわけではありません(スラッグも同様)ので、一応すみわけはできています。

参考リンク(WordPress codex日本語版)

あとがき・まとめ

  • WordPressの組み込み関数is_singleとis_singularは似ているが、挙動が異なる
  • is_singleはidやスラッグなども指定できるが、カスタム投稿名では判定できない
  • is_singularはidやスラッグなど指定できないが、カスタム投稿を指定できる

名前や機能は似ていましたが、カスタム投稿・id・スラッグに関わる面では挙動が異なる点が確認できたかと思います。Custom Post Type UIやショッピングカート系・機能追加されているテーマで別のカスタム投稿タイプが入ってくることはあるので、そういうときの条件分岐の一案として押さえておくとよいでしょう。

◆この記事で問い合わせ

*アトリエSS・web制作サービスページに移動します。webリニューアル・ロゴ・記事・wordpress化などでお力添えできます。
『サイトを既にお持ちで、リニューアル』の場合は、¥10万以下でご対応します(月額管理費/24回支払い縛りなどの強制無し)。

【カテゴリ】 - PHP・データベースetc, webメディア制作運用
【タグ】 - ,

  関連記事

WordPress・REST APIのjsonファイルにカスタムフィールドを入れ、タイトル・アイキャッチと共に外部サイトで取得・表示

今回は、管理人がWPで作ったサイトのコンテンツを、別の自社運営サ ...

【WPプラグイン】Smart Custom FieldsとCustom Field Bulk Editorは相性悪い?(空リンク・真偽値フィールドに文字)

今回は、管理人がカスタムフィールド系の案件で使っているプラグイン ...

イベントハンドラonClickとopenメソッドで、複数youtube動画をボタンで切り替え、iframe内に表示する方法

今回は管理人が、お取引先のサイトにつけようとしたけど、より便利な ...

【CSS】横並びメニューで、最初だけボーダー無しとかにしたい場合は?→擬似クラスfirst-childを、効かない例も紹介

今回は、『メニューなどで、最初の要素だけボーダー無しにしたい』み ...

cssフレームワーク利用サイトで、意図しないpaddingなどを消すには?→同クラス上書き(例:bootstrap)

今回は、CSSフレームワークなどを使ってサイトを構築していると、 ...

【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?

今回は、ちょっと需要があるかもしれない『WordPressカスタ ...

WP管理・投稿画面カスタマイズ~『p』『h2』みたいなタグ・定型文をボタン1つで記事に追加したい

今回は、以前サイト制作のお取引先さまと話した、WPの記事を投稿す ...