WordPressの「is_singular()」についてわかったことがある

なんか新しい物を作りたいなと思って、ただいまWordPressの関数とか勉強しています。勉強するために手っ取り早いのは「他の方が作った制作物を眺めること」だと私は思います。

特にWordPressプラグインなどは、見ているととても面白いです。オススメです。(私が作ったプラグインは眺めても面白くないので、他の方のをどうぞ。)

ところで、たまたま他の方が作られたプラグインのコードをなんとなく眺めていたんですが、条件分岐タグで「is_singular」というものがあります。

これは何だといいますと、私もよくわからないです。なので調べました。

条件分岐タグ – WordPress Codex 日本語版

シングルページ (固定ページ、個別投稿ページ、添付ファイルページ)

is_singular()

is_single()is_page() 、is_attachment() のいずれかが真である場合。

is_singular( 'book' )

‘book’ というカスタム投稿タイプの投稿を表示している場合。

is_singular( array( 'newspaper', 'book' ) )

‘newspaper’ または ‘book’ というカスタム投稿タイプの投稿を表示している場合。

と、あります。

シングルページ (固定ページ、個別投稿ページ、添付ファイルページ)かどうかの条件分岐に使うようでして、パラメーターを入れずに使うとデフォルトでそうなっているみたいです。

で、パラメーターを入れると、カスタム投稿タイプに関しての条件分岐ができると。複数の場合は「array」を使って指定するんですね。なるほど。

そんなイメージで大丈夫ですよね。たぶん。

「is_singular( ‘post’ )」という記述を知って、なんだ?となりました

たまたま、あるプラグインのソースコード中に、「is_singular(‘post’)」「is_singular(‘page’)」と記述してある箇所がありまして、そのプラグインではカスタム投稿タイプとして「post」「page」などを作成しているわけでもないのに、post,pageのパラメーターを設定していました。

これは、よくわからないな。と思いましたので、ちょっと気になって調べました。

投稿タイプ – WordPress Codex 日本語版

WordPress には5つの主要なデフォルト投稿タイプがあります。

投稿 (post)

WordPress での投稿 (post) は、ブログで使われるメインの投稿タイプです。投稿は通常、一番新しいものが最初にくる反時系列順で表示されます。投稿はフィードの作成にも使われます。

ページ (page)

WordPress でのページ (page) は投稿に似ていますが、投稿の時系列構造の外にあります。ページはメインのサイトドメインのすぐ下にくる独自 URL を持っており、特別なページテンプレートを使って表示することができます。また、他のページを親に持つ階層化した構造にすることもできます。

添付ファイル (attachment)

添付ファイル (attachment) は特別な投稿で、メディアアップロードシステムを使ってアップロードされたファイルについて、ファイル名・説明などすべての情報が含まれます。例えばファイルが画像の場合、画像のサイズや自動生成されたサムネイル、ファイルの位置、埋込み EXIF 情報などです。

リビジョン (revision)

リビジョン (revision) は下書きや既存の投稿・ページの過去の変更履歴を保存するための投稿タイプです。投稿・ページタイプと基本的には同じような内容ですが、元となる投稿・ページが親となります。

ナビゲーションメニュー (nav_menu) はナビゲーションメニューシステムの各メニュー項目を保存するための投稿タイプです。posts テーブルの項目がサイト内に表示出来るコンテンツ以外にも使えるという最初の例と言えるでしょう。

この上記の引用にあるように、「デフォルト」の投稿タイプとして、上の5つ(post,page,attachment,revision,nav_menu)があると理解しました。

ここで「is_singular()」に話を戻しますが、この条件分岐タグは

is_singular( array( 'post' , 'page' , 'attachment' ) )

と書き換えることができるようです。「is_singular()」を使ってpost,page,attachmentのいずれかの条件分岐をさせたい場合に使う、ということでしょうか。

それだったら、

「is_singular('post')」「is_singular('page')」

という書き方もなんとなく理解はできます。

でも、まだ深く理解はしていないんだろうと思います。ただこういう記述でもOKなことは、テストで検証して確認しましたので何かの機会に使用してみようかと思います。

参考URLはこちら

もうちょっと英文読めればな・・・なんていつも思いますね。

Conditional checks for custom post types

著者:bouya Imamura