2015/08/28
WordPressのカスタマイズでよく使うWordPressのif文と条件分岐タグ15
![WordPressのカスタマイズでよく使うWordPressのif文と条件分岐タグ](https://co-jin.net/wp-content/uploads/2015/08/wordpress_if.jpg)
WordPressのカスタマイズでよく使うWordPressのif文と条件分岐タグを、個人的にまとめてみました。
普段からWordPressを利用している関係上、if文を使った条件分岐をよく使います。
if文の条件分岐はとっても便利ですからね。
今回は普段よく利用する条件分岐タグに絞ってまとめてみました。
ご参考になれば幸いです。
WordPressのif文の使い方
条件が1つだけの場合
まずは、WordPressのif文の使い方をおさらいしておきましょう。
条件分岐はif文を利用して「もしAならばB」というように、ある条件を満たした場合の処理方法を指定するものです。
具体的には以下のように書きます。
1 2 3 |
<?php if (条件A()){ ?> 条件Aを満たす場合の処理 <?php } ?> |
「ホームの場合はバナーを表示」というような使い方ができます。
この例は、条件が1つだけの場合ですが、実際には、条件が1つだけとは限りません。
その場合は、複数の条件を指定します。
なお、上記の例はPHPの記法ですが、WordPressでは以下のようなブロックをはっきりさせる書き方も可能です。
1 2 3 |
<?php if (条件A): ?> 条件Aを満たす場合の処理 <?php endif; ?> |
PHPの記法に比べてわかりやすいですよね。
テンプレートで使用する場合は、こちらの書き方がオススメです。
ただし、「:」「;」を間違えないように注意しましょう。
「;」は最後だけです。
条件が複数ある場合
条件が複数ある場合には、「でなければ」を意味するelse文を組み合わせて利用します。
1 2 3 4 5 6 7 |
<?php if (条件A): ?> 条件Aを満たす場合の処理 <?php elseif (条件B): ?> 条件Bを満たす場合の処理 <?php else: ?> 条件AもBを満たさない場合の処理 <?php endif; ?> |
「ホームの場合はバナーAを表示、固定ページの場合はバナーB、どちらでもない場合はバナーを非表示」といった使い方ができます。
条件には論理演算子を使える
条件には論理演算子を利用できます。
論理演算子 | 例 |
---|---|
and(かつ) | if(条件A && 条件B) 条件Aかつ条件Bの場合(どちらにも合うもの) |
or(もしくは) | if(条件A II 条件B) 条件Aもしくは条件Bの場合(どちらか一方に合うもの) |
NOT(〜でない) | if(!条件A) 条件Aでない場合(条件に合わないもの) |
==(等しい) | if(条件A == 条件B) 条件Aと条件Bが等しい場合 |
!=(等しくない) | if(条件A != 条件B) 条件Aと条件Bが等しくない場合 |
<(〜より小さい) | if(条件A < 条件B) 条件Aが条件Bより小さい場合 |
>(〜より大きい) | if(条件A > 条件B) 条件Aが条件Bより大きい場合 |
<=(〜以下) | if(条件A <= 条件B) 条件Aが条件B以下の場合 |
>=(〜以上) | if(条件A <= 条件B) 条件Aが条件B以上の場合 |
===(値と型が等しい) | if(条件A === 条件B) 条件Aと条件Bの値と型が等しい場合 |
!==(値と型が等しくない) | if(条件A !== 条件B) 条件Aと条件Bの値と型が等しくない場合 |
以上を踏まえて、よく使う条件分岐を見て行きましょう。
サイトののメインページかどうかで利用する条件分岐タグ:is_home()
サイトのメインページかどうかを判断する場合には、is_home()を使います。
1 2 3 |
<?php if(is_home()): ?> 条件を満たす場合の処理 <?php endif; ?> |
サイトのフロントページかどうかで利用する条件分岐タグ:is_front_page()
サイトのフロントページかどうかを判断する場合には、is_front_page()を使います。
1 2 3 |
<?php if(is_front_page()): ?> 条件を満たす場合の処理 <?php endif; ?> |
個別投稿のページかどうかで利用する条件分岐タグ:is_single()
個別投稿のページかどうかを判断する場合にはis_single()を使います。
1 2 3 |
<?php if(is_single()): ?> 条件を満たす場合の処理 <?php endif; ?> |
個別投稿のページのID5かどうかで利用する条件分岐タグ:is_single(’5’)
個別投稿のページのID5かどうかを判断する場合には、is_single(’5’)というように使います。
1 2 3 |
<?php if(is_single('5')): ?> 条件を満たす場合の処理 <?php endif; ?> |
個別投稿のページのスラッグ(例:test)で利用する条件分岐タグ:is_single(’test’)
個別投稿のページのスラッグ(例:test)かどうかを判断する場合には、is_single(’test’)というように使います。
1 2 3 |
<?php if(is_single('test')): ?> 条件を満たす場合の処理 <?php endif; ?> |
固定ページかどうかで利用する条件分岐タグ:is_page()
固定ページかどうかを判断する場合にはis_page()を利用します。
1 2 3 |
<?php if(is_page()): ?> 条件を満たす場合の処理 <?php endif; ?> |
固定ページのID5かどうかで利用する条件分岐タグ:is_page(‘5’)
固定ページのID5かどうかを判断する場合にはis_page(‘5’)というように利用します。
1 2 3 |
<?php if(is_page('5')): ?> 条件を満たす場合の処理 <?php endif; ?> |
固定ページのスラッグ(例:test)で利用する条件分岐タグ:is_page(’test’)
固定ページのスラッグ(例:test)かどうかを判断する場合には、is_page(’test’)というように使います。
1 2 3 |
<?php if(is_page('test')): ?> 条件を満たす場合の処理 <?php endif; ?> |
カテゴリーページであるかどうかで利用する条件分岐タグ:is_category()
カテゴリーページであるかどうかを判断する場合にはis_category()を利用します。
1 2 3 |
<?php if(is_category()): ?> 条件を満たす場合の処理 <?php endif; ?> |
タグのアーカイブページであるかどうかで利用する条件分岐タグ:is_tag()
タグのアーカイブページであるかどうかを判断する場合にはis_tag()を利用します。
1 2 3 |
<?php if(is_tag()): ?> 条件を満たす場合の処理 <?php endif; ?> |
タクソノミーのカイブページであるかどうかで利用する条件分岐タグ:is_tax()
タクソノミーのカイブページであるかどうかを判断する場合にはis_tax()を利用します。
1 2 3 |
<?php if(is_tax()): ?> 条件を満たす場合の処理 <?php endif; ?> |
PCとスマホで表示を切り替えるときに使う条件分岐タグ:is_mobile()
PCとスマホで表示を切り替えたいという場合には、is_mobile()というテンプレートタグを利用します。
しかし、このままではすぐに使えないので、functions.phpに以下の記述をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//スマホ表示分岐 is_mobile関数を利用するための関数設定 function is_mobile(){ $useragents = array( 'iPhone', // iPhone 'iPod', // iPod touch 'Android.*Mobile', // 1.5+ Android *** Only mobile 'Windows.*Phone', // *** Windows Phone 'dream', // Pre 1.5 Android 'CUPCAKE', // 1.5+ Android 'blackberry9500', // Storm 'blackberry9530', // Storm 'blackberry9520', // Storm v2 'blackberry9550', // Storm v2 'blackberry9800', // Torch 'webOS', // Palm Pre Experimental 'incognito', // Other iPhone browser 'webmate' // Other iPhone browser ); $pattern = '/'.implode('|', $useragents).'/i'; return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']); } |
以上を記述した上で、以下のように利用します。
1 2 3 4 5 |
<?php if(is_mobile()) : ?> 条件A <?php else: ?> 条件Aに当てはまらない場合の処理 <?php endif; ?> |
ある倍数であるかどうかを判断する場合の条件分岐の使い方
WordPressループなどで、特定の出力順にだけ別の処理を行いたいといった場合があると思います。
ここでは例えば、3の倍数のときだけ、特定のクラス名を付けたいケースです。
こうしたケースでは、便利な条件タグは存在しないので、変数を利用して条件分岐を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $count=0; ?> //変数宣言 <?php if(have_posts()): while(have_posts()) : the_post(); ?>//WordPressループ <?php $count++; ?>//回数をカウントさせます <div class="work <?php echo 'number'.$count; ?> <?php if(($count % 3) ==0): ?> //3の倍数かどうかを判断 <?php echo ' classname'; ?> //3の倍数のときはclassnameを出力 <?php endif; ?>"> <a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?> <div class="caption"> <div class="work_title"> <h1><?php the_title(); ?></h1> </div> </div> </a> </div> <?php endwhile; endif; ?> |
$count=0という変数を作成し、実行する回数を$count++を使ってカウントします。
3の倍数ですから、3で割り切れる場合という条件()を作成し、条件にあった場合だけ、echo ‘classname’というクラス名を出力するにようしています。
実際に出力すると、以下のようになります。
3の倍数のときだけ、classnameが表示されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<div class="work number1"> <a href=""> <img width="466" height="466" src="" class="attachment-post-thumbnail wp-post-image" alt="SplitShire-2750" /> <div class="caption"> <div class="work_title"> <h1>これはサンプルです42</h1> </div> </div> </a> </div> <div class="work number2"> <a href=""> <img width="466" height="466" src="" class="attachment-post-thumbnail wp-post-image" alt="SplitShire-2257" /> <div class="caption"> <div class="work_title"> <h1>これはサンプルです41</h1> </div> </div> </a> </div> <div class="work number3 classname"> <a href=""> <img width="466" height="466" src="" class="attachment-post-thumbnail wp-post-image" alt="SplitShire-2193" /> <div class="caption"> <div class="work_title"> <h1>これはサンプルです40</h1> </div> </div> </a> </div> |
最後の投稿かどうかを判断する場合の条件分岐の使い方
今度は、投稿が最後の場合だけ別の処理を行いたいというケースでの条件分岐です。
WordPressループなどで、最後の投稿にだけ別の処理を行いたいといった場合があると思います。
ここでは例えば、最後の投稿だけ、特定のクラス名を追加したいケースです。
こうしたケースでも、便利な条件タグは存在しないので、オリジナル関数is_last_postを利用します。
(この方法は「WordPress:最初・最後・奇数・偶数の記事にそれぞれクラスを付けたり、表示内容を変更する方法」をもとに作成しています)
まず最初にis_last_post関数をfunctions.phpに定義します。
これで、is_last_post関数が、投稿の最後であるかとどうかを判断できるようになります。
1 2 3 4 5 |
//最後の項目だけに適用する function is_last_post(){ global $wp_query; return ($wp_query->current_post+1 === $wp_query->post_count); } |
定義した関数をもとに、条件分岐を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php if(have_posts()): while(have_posts()) : the_post(); ?> <?php if (is_last_post()): ?> //定義した関数を使って条件分岐。条件に合致した場合はクラス名を出力 <div class="work last-work"> <a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?> <div class="caption"> <div class="work_title"> <h1><?php the_title(); ?></h1> </div> </div> </a> </div> <?php else: ?>//is_last_postで定義した条件に合致しない場合の処理 <div class="work"> <a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?> <div class="caption"> <div class="work_title"> <h1><?php the_title(); ?></h1> </div> </div> </a> </div> <?php endif; ?> <?php endwhile; endif; ?> |
定義した関数is_last_postを使って条件分岐を行います。
条件にあった場合だけ、last-workというクラス名を出力するにようしています。
実際に出力すると、以下のようになります。
最後の投稿だけ、last-workというクラス名がついています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<div class="work"> <a href=""> <img width="466" height="466" src="" class="attachment-post-thumbnail wp-post-image" alt="negativespace1-12" /> <div class="caption"> <div class="work_title"> <h1>これはサンプルです32</h1> </div> </div> </a> </div> <div class="work last-work"> <a href=""> <img width="466" height="466" src="" class="attachment-post-thumbnail wp-post-image" alt="negativespace1-11" /> <div class="caption"> <div class="work_title"> <h1>これはサンプルです31</h1> </div> </div> </a> </div> |
最初の投稿かどうかを判断する場合の条件分岐の使い方
逆に、最初の投稿かどうかを判断する場合は、関数の定義内容を変更します。
(この方法も「WordPress:最初・最後・奇数・偶数の記事にそれぞれクラスを付けたり、表示内容を変更する方法」をもとに作成しています)
まず最初にis_first_post関数をfunctions.phpに定義します。
これで、is_first_post関数が、最初の投稿であるかとどうかを判断できるようになります。
1 2 3 4 5 |
//最初の投稿だけに適用する function is_first_post(){ global $wp_query; return ($wp_query->current_post === 0); } |
条件分岐は、まったく同じ形になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php if(have_posts()): while(have_posts()) : the_post(); ?> <?php if (is_first_post()): ?> //定義した関数を使って条件分岐。条件に合致した場合はクラス名を出力 <div class="work first-work"> <a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?> <div class="caption"> <div class="work_title"> <h1><?php the_title(); ?></h1> </div> </div> </a> </div> <?php else: ?>//is_first_postで定義した条件に合致しない場合の処理 <div class="work"> <a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?> <div class="caption"> <div class="work_title"> <h1><?php the_title(); ?></h1> </div> </div> </a> </div> <?php endif; ?> <?php endwhile; endif; ?> |
定義した関数is_first_postを使って条件分岐を行います。
条件にあった場合だけ、first-workというクラス名を出力するにようしています。
WordPressをカスタマイズするときに役立つ本
ご参考になりましたでしょうか。
WordPressのカスタマイズでよく利用するif文や条件分岐タグには、まだまだ種類があります。
それらについては、追記という形で記事を充実させていく予定です。
Sponsored by
お役に立てましたら、以下どれでも結構のですので、ポチリと……。
Amazonアソシエイト・プログラム規約による記載
当サイトはamazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。
この記事を読んだ人はこんな記事も読んでいます
-
-
WordPressで前後ページへのリンク先URLだけを取得するテンプレートタグget_permalinkとget_adjacent_post
WordPressで前後ページへのリンク先URLだけを取得するテンプレートタグをご紹介します。 W
-
-
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用オリジナルテーマにする方法vol.4
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用のオリジナルテーマにする方
-
-
レスポンシブに対応したWordPress用テーマ90+(2014年ベストテーマ)
レスポンシブWEBデザインに対応したWordPress用テーマをまとめてご紹介します。 今回ご紹介
-
-
WordPressのバックアップに!無料なのに高機能なプラグイン「UpdraftPlus」
WordPress用バックアッププラグインについては前回「おすすめはコレだ!WordPressのバッ
-
-
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用オリジナルテーマにする方法vol.3
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用のオリジナルテーマにする方
-
-
WordPressのテーマ検索に最適!テーマをより探しやすくした検索サービス「ThemeBro」
WordPressのテーマ検索に最適な、テーマ検索に最適化された検索サービス「ThemeBro」をご
-
-
WordPress記事作成マニュアル:クライアント向けをInDesignで作成しました(無料です。ご自由にどうぞ)
WordPress記事作成マニュアルをInDesignで作成しました。 知り合いのサイトをWord
-
-
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用オリジナルテーマにする方法vol.7プラグイン編
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用のオリジナルテーマにする方
-
-
おすすめはコレ!WordPressのバックアップ用プラグインベスト5
WordPressのバックアップ用プラグインでオススメのプラグインをご紹介します。 WordPre
-
-
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用オリジナルテーマにする方法vol.1
HTML+CSSページ(レスポンシブWEBデザイン)をWordPress用のオリジナルテーマにする方