12
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

カスタム投稿タイプで使えるの条件分岐

Posted at

1)表示するページに対する条件分岐

シングルページ

//一つの投稿タイプの場合
 if (is_singular('post_type')){}

//複数の投稿タイプの場合
 if (is_singular(array('post_type1', 'post_type2', 'post_type3'))){}

*is_singular('post')という表記できる
*is_single()より上に記述する。

アーカイブページ

//一つの投稿タイプの場合
 if (is_post_type_archive('post_type')){}

//複数の投稿タイプの場合
 if (is_post_type_archive(array('post_type1', 'post_type2', 'post_type3'))){}

*is_post_type_archive('post')という表記はできない
*is_archive()より上に記述する。

タクソノミーのアーカイブページ

▼タクソノミーアーカイブページか。

 if (is_tax()){}

▼タクソノミー"movie"のアーカイブページか。

 if (is_tax('movie')){}

▼タクソノミー"movie"のアーカイブページで、そのタームが "comedy" か。

 if (is_tax('movie','comedy')){}

#2)ループ内などの投稿に対する条件分岐

has_term(タームを持っているか)

▼現在の投稿が、タクソノミー"movie"のターム"comedy"を持っているか。

 if (has_term('comedy','movie')){}

▼現在の投稿が、タクソノミー"movie"のいずれかのタームを持っているか。

 if (has_term('','movie')){}

任意の$termを取得するときは省略''でOK。

例)ターム情報を表示したい

現在の投稿のターム表示するとき。

if(has_term('','movie')){ 
  $terms = get_the_terms($post->ID,'movie');
  foreach ( $terms as $term ){
   echo $term->slug; //タームスラッグ名取得
   echo $term->name; //ターム名取得
  }
}

#3)投稿タイプの取得で条件分岐
▼現在の投稿タイプが"news"かどうか。

 if ('news' ===get_post_type() ){}
12
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?