WordPressチートシート② 条件分岐
WordPressの条件分岐
条件分岐の書き方
<?php if (条件) : ?>
条件に当てはまるときに表示するもの
<?php else: ?>
条件に当てはまらないときに表示するもの
<?php endif; ?>
elseifで細かな条件分岐
<?php if ( is_home() || is_front_page() ) : ?>
ホームでのみ表示するもの
<?php elseif ( is_page() ) : ?>
固定ページで表示するもの
<?php else: ?>
それ以外に表示するもの
<?php endif; ?>
「!」で「◯◯でないとき」という場合
<?php if ( !is_home() ) : ?>
メインの投稿ページ以外で表示するもの
<?php endif; ?>
複数の条件を組み合わせる
ifの括弧()内では、&&(ANDの意味)と||(ORの意味)を使って、2つ以上の条件を組み合わせることができる。
<?php if ( wp_is_mobile() && is_single() ) : ?>
「モバイル」かつ「記事ページ」のときに表示するもの
<?php endif; ?>
※条件を2つとも満たすときに表示する
<?php if ( wp_is_mobile() || is_single() ) : ?>
「モバイル」もしくは「記事ページ」のときに表示するものをココに書く
<?php endif; ?>
※条件のどちらか一方(もしくは両方)を満たしたときに表示する
コメントアウトの書き方
<?php if(略): //◯◯のとき ?>
略
<?php else: //◯◯でないとき?>
略
<?php endif; //◯◯の条件分岐終了 ?>
条件分岐の使用例
サムネイルがある場合
<?php if ( has_post_thumbnail()): ?>
<?php the_post_thumbnail();?>
<?php endif; ?>
single.phpのテンプレートで振分け
<?php
$post = $wp_query->post;
if (in_category('news')||in_category('event')) {
//お知らせ用テンプレート
get_template_part( 'single','base' );
} elseif(in_category('real')) {
//不動産用テンプレート
get_template_part( 'single','real' );
} else {
//上記以外の場合のテンプレート
get_template_part( 'single','base' );
}
?>
カスタム投稿タイプで振分け
<?php if ( get_post_type() === 'カスタム投稿タイプ名' ): ?>
指定されたカスタム投稿タイプの場合のみ表示
<?php endif; ?>
カスタム投稿タイプのアーカイブページで振分け
<?php if(is_post_type_archive('カスタム投稿タイプ名')): ?>
カスタム投稿タイプのアーカイブページの場合のみ表示
<?php endif; ?>
複数のカスタム投稿タイプのアーカイブページで振分け
<?php if( is_post_type_archive( array( 'カスタム投稿タイプ名1', 'カスタム投稿タイプ名2') ) ) :?>
いくつかの特定のカスタム投稿のアーカイブページだけに表示
<?php endif;?>
特定のカスタム投稿のシングルページで振り分け
<?php if( is_singular( 'カスタム投稿タイプ名' ) ) :?>
特定のカスタム投稿のシングルページにだけ表示
<?php endif;?>
いくつかの特定のカスタム投稿のシングルページで振り分け
<?php if( is_singular( array( 'カスタム投稿タイプ名1', 'カスタム投稿タイプ名2' ) ) ) :?>
いくつかの特定のカスタム投稿のシングルページだけ表示
<?php endif;?>
カスタム分類で振分け①
<?php if(is_tax('タクソノミー名')): ?>
タクソノミーのアーカイブページで表示
<?php endif; ?>
カスタム分類で振分け②
<?php if(is_tax('タクソノミー名', 'ターム名')): ?>
タクソノミーのアーカイブページで、そのタームが'ターム名'だけ表示
<?php endif; ?>
カスタム分類で振分け②タームが複数ある場合
<?php if(is_tax('タクソノミー名', array('ターム名1','ターム名2'))): ?>
タクソノミーのアーカイブページで、そのタームが'ターム名1''ターム名2'だけ表示
<?php endif; ?>
カスタム分類で振分け③(シングルページ)
<?php if (is_object_in_term($post->ID, 'タクソノミー名','ターム名')): ?>
シングルページ
<?php endif; ?>
カスタム分類で振分け③タームが複数ある場合(シングルページ)
<?php if (is_object_in_term($post->ID, 'fruit_cat',array('apple','orange'))): ?>
シングルページ
<?php endif; ?>
タグページで振分け
<?php if(is_tag()): ?>
タグのアーカイブページの場合のみ表示
<?php endif; ?>
検索結果ページで振分け
<?php if(is_search()): ?>
検索結果ページの場合のみ表示
<?php endif; ?>
404エラーページで振分け
<?php if(is_404()): ?>
404ページの場合のみ表示
<?php endif; ?>
| is_home() | メインの投稿ページかを判定 |
| is_front_page() | フロントページかを判定 |
| is_singular() | 投稿タイプを判定 デフォルトの投稿 => is_singular( ‘post’ ) カスタム投稿タイプ => is_singular( ‘投稿タイプ名’ ); |
| is_single() | 個別の投稿ページかを判定 例:is_single(‘投稿ID’) is_single( array(‘投稿ID’,’投稿ID’,’投稿ID’) ) |
| is_page() | 固定ページかを判定 例:is_page(‘ページID’) is_page( array(‘ページID’,’ページID’,’ページID’) ) |
| is_page_template() | ページテンプレートが使われているかを判定 例 sample.php => if ( is_page_template( ‘sample.php’ ) ) |
| is_archive() | 各アーカイブページが表示されているかを判定 ※アーカイブの1ページ目のみ <?php if( is_archive() && !is_paged() ) : ?> アーカイブの1ページ目でのみ表示するものをココに書く <?php endif; ?> |
| is_category() | ページが $category カテゴリーと関連付けられているかを判定 ※カテゴリーの1ページ目のみ <?php if( is_category() && !is_paged() ) : ?> カテゴリーの1ページ目でのみ表示するものをココに書く <?php endif; ?> |
| in_category() | 特定のカテゴリーに属しているかを判定 |
| wp_is_mobile() | モバイル(スマホ、タブレット)かを判定 |
| is_404() | 404ページが表示されているかを判定 |
