Web制作忘備録

WP条件分岐

トップ MEMORANDAM WORDPRESS

WP条件分岐

条件分岐について

条件をつけて出力を制御するタグ、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; ?>