ifを利用した条件判定
if文 単純な条件判定
- 特定の場合のみ実行したい時に記述
- 条件を設定し、条件を満たす場合に処理を実行する
if(条件){
条件を満たす場合の処理
}
《例:午前10時前なら処理を実行》
- 「date_default_timezone_set」は、php.iniで変更してある場合は、記述は不要
<?php get_header(); ?> <?php date_default_timezone_set( 'Asia/Tokyo' ); //タイムゾーンを東京に設定 ?> <?php $hour = date('G'); if ( $hour < 10 ) { echo 'おはようございます。'; } ?> <?php get_footer(); ?>
- 「$hour = date('G')」は、現在の時刻を取得
- 「$hour < 10」は、現在時刻 $hour が 10 より小さい場合
- 「echo 'おはようございます。'」は、「おはようございます。」と表示
- 10時以降は、何も表示しない
if文を使うメリット
- ファイルが1つですむ
- 10時ちょうどに自動的に表示を変更できる
- 一度作業すればよい(毎日作業しなくてもよい)
複雑な条件分岐 if〜else文
if(条件1){
条件1を満たす場合の処理
} elseif(条件2){
条件1を満たさないで、条件2を満たす場合の処理
} elseif(条件3){
条件1と条件2を満たさないで、条件3を満たす場合の処理
} else {
どの条件も満たさなかった場合の処理
}
- elseは、それ以外すべての意味で1回だけ書くことができます
<?php get_header(); ?> <?php date_default_timezone_set( 'Asia/Tokyo' ); //タイムゾーンを東京に設定 ?> <?php $hour = date('G'); if ( $hour < 10 ) { echo 'おはようございます。'; } elseif ( $hour < 16 ) { echo 'こんにちは。'; } elseif ( $hour < 20 ) { echo 'こんばんは。'; } else { echo 'おやすみなさい。'; } ?> <?php get_footer(); ?>
複数の条件で気をつけたいこと
- 条件分岐は上から順に判定を行い、条件を満たしたらそれ以降の elseif や else は判定されないということ
「:」コロンを使った if文の表記方法
- 構文途中の区切りは「: コロン」、最後の区切りは「endif; セミコロン」を記述します
if(条件1):
条件1を満たす場合の処理
elseif(条件2):
条件1を満たさないで、条件2を満たす場合の処理
else :
どの条件も満たさなかった場合の処理
endif;
<?php get_header(); ?> <?php date_default_timezone_set( 'Asia/Tokyo' ); //タイムゾーンを東京に設定 ?> <?php $hour = date('G'); if ( $hour < 10 ) : echo 'おはようございます。'; elseif ( $hour < 16 ) : echo 'こんにちは。'; elseif ( $hour < 20 ) : echo 'こんばんは。'; else : echo 'おやすみなさい。'; endif; ?> <?php get_footer(); ?>
WordPressでのif文の使用例
<?php get_header(); ?> <?php while ( have_posts() ) : the_post(); //ループの開始 ?> <?php if ( is_single() ) : ?> <h1 class="entry-title"><?php the_title(); ?></h1> <?php else : ?> <h1 class="entry-title"> <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a> </h1> <?php endif; // is_single() ?> <?php the_content() //記事本文を表示 ?> <?php endwhile; //ループの終了 ?> <?php get_footer(); ?>
- 「is_single()」は、「個別投稿かそうでないか」を判定する
- 個別投稿の場合は、条件を満たしたと判断されます
- 「the_title()」は「投稿のタイトル」、「the_permalink()」は「投稿パーマリンク」を表示します
- この条件により個別投稿の場合は、最初の処理である以下が実行されます
<h1 class="entry-title"><?php the_title(); ?></h1>
個別投稿でない場合は、elseの処理を実行します。
<h1 class="entry-title"> <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a> </h1>
- 個別投稿でない場合つまりアーカイブページなどの場合は、投稿へのリンクを表示することでタイトルをクリックして、個別投稿ページへ移動できます
- 個別投稿の場合は、すでに見ているページなのでリンクを付けなくてもよいという処理です