カテゴリー
WordPressカスタマイズ

PHP条件分岐のif-else文 ワードプレス特化の用例集

if文は指定の条件に当てはまるケースとそれ以外で別の処理を行うための構文です。
C言語やJavaScriptなど様々なプログラム言語で使用されますが、ここではWordPressのPHPに特化した形で解説します。

基本の記述方法

まずは基本の記述方法です。

<?php
if(条件式) {
当てはまる場合の処理
} else {
当てはまらない場合の処理
}
?>

下は一度、判定時に一度PHPを抜けて処理をベタ打ちしています。
プログラムに馴染みがない方でも少し理解しやすいでしょう。

<?php if(条件式) { ?>
当てはまる場合の処理
<?php } else { ?>
当てはまらない場合の処理
<?php } ?>

コロン構文

こちらはPHPとHTMLを混在する場合にさらに見やすく記述できます。

<?php if(条件式) : ?>
当てはまる場合の処理
<?php else : ?>
当てはまらない場合の処理
<?php endif; ?>

基本的に結果は同じなので、自分が理解しやすい記述で構わないと思います。

論理演算子

複数の条件を組み合わせる際には論理演算子を使います。

&&→条件1 かつ 条件2
andも同じ役割だが、優先順位は&&>and
if(is_single() || is_tag('WordPress'))→’WordPress’というタグを持つ投稿

||→条件1 あるいは 条件2
orも同じ役割だが、優先順位は||>or
if(is_page() || is_single())→ページか投稿

!→この条件ではない
!is_page()→固定ページではない

==→条件1と条件2が等しい
if(条件1 == 条件2) のように使う

else ifとelseifの違い

それ以外の条件判定には、else ifelseifという2つの書き方ができます。
実行結果は同じです。
厳密にはelse ifがわずかに速いとされていますが、通常、気にする必要のない範疇です。
よって、どちらを使用しても構いませんが、コロン記法ではelseifでないとエラーになる点は注意する必要があります。

WordPressでの条件式

固定ページ

if(is_page())
  • if(is_page('5'))if(is_page('contact'))のような形でID・スラッグ・タイトルを因数として絞り込みが可能。
  • 複数指定はis_page(array(5, 10, 'スラッグ2'))のようにカンマで区切り。
  • IDのシングルクォーテーションは省略可。

投稿

if(is_single())
  • is_page()と同じく、if(is_single('125'))のような形でID・スラッグ・タイトルを因数として絞り込みが可能。
  • 複数指定はis_page(array(5, 10, 'スラッグ2'))のようにカンマで区切り。
  • IDのシングルクォーテーションは省略可。

固定ページ もしくは投稿

if(is_page() || is_single())
  • is_singular()はカスタム投稿も含めたすべての投稿となる。

トップページ

if ( is_home() || is_front_page()) 

カスタム投稿

if(is_singular('info'))
  • カスタム投稿infoでの指定例。
  • is_singular()であることに注意。

カスタム投稿のアーカイブ

if( is_post_type_archive('info'))
  • カスタム投稿infoのアーカイブでの指定例。
  • 複数はarray('info','news') のように指定可能。

アーカイブページ

if(is_archive())
  • 日別などすべてのアーカイブ系を含むため、カテゴリーだけを指定する場合は以下のif(is_category())を使う

カテゴリーページ

if(is_category())
  • if(is_category('1','スラッグ','カテゴリ名'))のように、ID・スラッグ・カテゴリ名を因数として絞り込み、および、複数指定が可能。
  • IDのシングルクォーテーションは省略可。

タグページ

if(is_tag())
  • if(is_tag('test','83'))など、タグ・ID・スラッグを因数として絞り込み、および、複数指定が可能。
  • IDのシングルクォーテーションは省略可。

検索結果ページ

if(is_search())

404ページ

if(is_404())

作成者ページ

if(is_author())

2ページ目以降

if(is_paged())
  • 逆に1ページ目の指定は!is_paged()

カスタム投稿タイプのアーカイブ

if(is_post_type_archive())

モバイル

if(wp_is_mobile())
  • いわゆるスマホ判定です。

アイキャッチ画像

if (has_post_thumbnail())
  • アイキャッチ画像の有無を判定します。

プレビューかどうか

if (is_preview())

使用テンプレートでの条件分岐

if (is_page_template('sample.php'))

記事があるかどうか

if(is_category() && have_posts())
  • 例えば、カテゴリページでの挙動で記事が存在する場合の条件分岐はis_category() && have_posts()となります。

訪問者のIPアドレスで条件分岐

if($_SERVER['REMOTE_ADDR'] === "xxx.xxx.xxx.xxx")
  • こちらはPHPのサーバー環境変数を参照しています。

ログインユーザーかどうか

if (is_user_logged_in())
  • ログイン状態か否かで別の処理を行えます。

WordPressのログイン状態で条件分岐する

ユーザー権限による条件分岐

if(current_user_can('administrator'))
  • ‘administrator’,’editor’,’author’,’contributor’,’contributor’,’subscriber’などの引数で権限を指定できます。

WordPressでよく使う用例集

トップページではサイト名を表示

<?php if ( is_home() || is_front_page() ) : ?>
<?php bloginfo( 'name' ); ?>
<?php endif; ?>
  • 用例のように、elseの処理が必要ない場合は<?php else:?>は省くことができます。

アイキャッチ画像を表示、なければ代替え表示

&lt;?php if ( has_post_thumbnail() ) : ?&gt; 
&lt;?php the_post_thumbnail(); ?&gt;
&lt;?php else: ?&gt;
&lt;img src=&quot;&lt;?php echo get_template_directory_uri(); ?&gt;/images/site_image.png&quot; alt=&quot;site_image&quot;&gt;
&lt;?php endif; ?&gt;

スマホとPCで違う画像を表示

&lt;?php if (wp_is_mobile()) :?&gt;
&lt;img src=&quot;&lt;?php echo get_template_directory_uri(); ?&gt;/images/image_mobile.png&quot; alt=&quot;mobile_image&quot;&gt;
&lt;?php else: ?&gt;
&lt;img src=&quot;&lt;?php echo get_template_directory_uri(); ?&gt;/images/image_pc.png&quot; alt=&quot;pc_image&quot;&gt;
&lt;?php endif; ?&gt;

用例は随時追加していきたいと思います。
こんな用例が知りたい!という要望があればリクエストをどうぞ。

profile image

執筆:R3098

WEBサービス構築・監修が生業です。WordPress 関連では Aurora Heatmap などのプラグイン開発も行っています。サイト運営者の力になりたいと考えます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。