複数のカスタム投稿タイプがあるサイトにて、特定のカスタム投稿の場合にdescriptionの書き方を変えたいということがありました。
WordPress
特定のカスタム投稿タイプを識別
とあるカスタム投稿タイプのときは、descriptionをカスタムフィールドから取ってきて、そうでない場合には抜粋から取ってきたいとかいったことでした。
他にもタイトルやらをいっしょに指定するわけですが。
カスタム投稿の識別は「is_singular」
特定のカスタム投稿タイプかどうかを判定したいわけです。
if文の条件として使いますよね。
関数の「is_singular
」です。
引数としてカスタム投稿タイプの名前(post_type
)を設定すれば、そのカスタム投稿タイプの場合にTrue、それ以外の場合にFalseを返します。
条件分岐に使えます。
カスタム投稿タイプの名称はスラッグになっているやつ
is_singlar
の引数にカスタム投稿タイプの名称を指定すれば、表示しているページが特定のカスタム投稿タイプかどうかを判定できます。
ここでいう「カスタム投稿タイプの名称」とは、post_typeのことで、つまりはスラッグと同じです。
カスタム投稿タイプの登録時に指定した第1引数です。
もう少し詳しく書くと、register_post_type
の$post_type
です。
たとえば以下です。
register_post_type(
'hoge',
array(
'label' => ...(略)
上記のように設定した場合は、以下のように識別します。
if ( is_singular('hoge') ) { ...(略)
上記の判定だと、「hoge」という名称のカスタム投稿タイプの場合に、if文のTrueの方に入ります。
「is_single」との使い分け
すごく似ているので混乱しがちなのですが、is_single
は特定のシングルページかどうかを判定するときに使います。
ざっくりとは「投稿」かどうかの判定です。
引数指定なしの場合は、すべての投稿ページでTrueです。ただし、添付ファイルと固定ページが例外でFalseです。
引数を指定すれば、特定のページを識別できます。
指定方法は、ID、スラッグ、タイトル文字列で、配列も可能です。
アーカイブページかどうかは「is_post_type_archive」
今回はアーカイブページではないので採用しませんでした。
ちなみに、「アーカイブページ」とは一覧ページのことです。そのカスタム投稿タイプの投稿を一覧表示するわけですね。初期設定にてアーカイブを有効化していれば、アーカイブページが自動で作成されます。
ご意見やご感想などお聞かせください! コメント機能です。