条件分岐について
条件をつけて出力を制御するタグ、wpでは専用のものが用意されている
関数名の後の()内でで条件を絞ることが可能、ID指定(値が文字列でない場合)の時は、”なしで指定しなければならない、複数の場合は基本は()内にarray(条件,条件)で指定。
IDの確認方法
管理画面よりページや投稿の一覧画面で、マウスカーソルを当てた際のURL内にIDが書いている数字の部分がID
固定・投稿・カスタム投稿の場合 /wp-admin/post.php?post=数字
作成者の場合 /wp-admin/user-edit.php?user_id=数字
条件分岐タグ基本
トップページのみ
<?php if ( is_front_page() || is_home() ) : ?>
トップページで行う処理を書く
<?php endif; ?>
固定ページのみ
<?php if ( is_page('5') ) : ?> //カッコ内にIDかスラッグか記事タイトルで指定可能
固定ページで行う処理を書く
<?php endif; ?>
投稿ページ
<?php if ( is_single() ) : ?> //カッコ内にIDかスラッグか記事タイトルで指定可能
個別投稿ページで行う処理を書く
<?php endif; ?>
投稿ページ複数指定
<?php if ( is_single(array(1,'hello-world','Hello world!')) ) : ?>
IDが「1」、もしくはスラッグが「hello-world」、もしくはタイトルが「Hello world!」の個別投稿ページで行う処理を書く
<?php endif; ?>
全てのアーカイブページ
<?php if ( is_arhive() ) : ?>
アーカイブページで行う処理を書く
<?php endif; ?>
全てのカテゴリページ(複数の場合は、上記投稿の複数指定のarrayを書く、IDとスラッグ指定も投稿と同じ)
<?php if ( is_category() ) : ?>
カテゴリーページで行う処理を書く
<?php endif; ?>
全てのタグページ(複数の場合は、上記投稿の複数指定のarrayを書く、IDとスラッグ指定も投稿と同じ)
<?php if ( is_tag() ) : ?>
全てのタグページで行う処理を書く
<?php endif; ?>
検索結果ページ
<?php if ( is_search() ) : ?>
検索結果ページで行う処理を書く
<?php endif; ?>
404ページ
<?php if ( is_404() ) : ?>
404ページで行う処理を書く
<?php endif; ?>
アイキャッチ画像の有無
<?php if ( has_post_thumbnail() ) : ?>
アイキャッチ画像指定されている場合
<?php the_post_thumbnail(); ?>
<?php else: ?>
アイキャッチ画像指定されていない場合に代替画像を表示
<?php endif; ?>
全ての作成者ページ
<?php if ( is_author() ) : ?>
作成者ページで行う処理を書く
<?php endif; ?>
条件分岐カスタム投稿
カスタム投稿のアーカイブ(カスタム投稿トップ)<?php if( is_post_type_archive() ) : ?>
カスタム投稿タイプの一覧ページで行う処理を書く
<?php endif; ?
>
カスタム投稿スラッグがmedicalの場合<?php if( get_post_type() === 'medical' ) : ?>
medicalの場合に行う処理を書く
<?php endif; ?
>
タクソノミーアーカイブ<?php if( is_tax() ) : ?>
タクソノミ一覧ページで行う処理を書く
<?php endif; ?>
タームアーカイブ<?php if( is_tax('medical','doctor') ) : ?>
//medicalタクソノミのdoctorというターム ターム一覧ページで行う処理を書く
<?php endif; ?>
条件の付け方
複数条件の場合は演算子で認識させる必要がある、phpの演算子で対応すること
比較演算子(条件が1個の時に使う)
値が等しい時 == <?php if($num == 20) : ?> 表示する内容<?php endif; ?>
値が等しくない時 !== <?php if($num !== 20) : ?> 表示する内容<?php endif; ?>
値と型等しい時 === (数字なのか文字列なのかが型) <?php if($num === 20) : ?> 表示する内容<?php endif; ?>
値が大きい時(以上ではない時) > <?php if($num > 20) : ?> 表示する内容<?php endif; ?>
値が同じかそれ以上の時 <= <?php if($num >= 20) : ?> 表示する内容<?php endif; ?>
論理演算子(複数条件で使う)
$numと&num2がともに同じ場合(trueの場合)
&&の方が優先される
<?php if($num && &num2) : ?>
表示する内容<?php endif; ?>
<?php if($num and &num2) : ?>
表示する内容<?php endif; ?>
$numと&num2のどちらかが同じ場合(trueの場合)
||の方が優先される
<?php if($num || &num2) : ?>
表示する内容<?php endif; ?>
<?php if($num or &num2) : ?>
表示する内容<?php endif; ?>
$numと&num2が同じか、$numと&num2が違う場合
trueとfalseで判断せず、内容が合致してるかどうかで見る
<?php if($num xor &num2) : ?>
表示する内容<?php endif; ?>