WordPress

【これだけは覚えておきたい】WordPress条件分岐タグまとめ

【これだけは覚えておきたい】WordPress条件分岐タグまとめ
WordPressの条件分岐ってどう書けばいいの?

WordPressでは、

  • トップページだけヘッダーを変えたい
  • スマホだけ非表示にしたい

など、条件によって設定を変えたい事がよくあります。

これを条件分岐と呼びますが、今回はよく使うもの、もしくは個人的に使う可能性があると思うものだけまとめました。

もしこの記事に知りたい条件分岐がない場合は以下のページを見ればあるかと思います。

条件分岐タグ - WordPress Codex 日本語版

効率よくWordPress制作したい人はこちら

WordPress条件分岐の書き方

まずは条件分岐の書き方を解説していきます。

ここの書き方が基本となり、次のセクションの条件分岐タグでも応用出来るのでここはしっかり押さえておきましょう。

 

基本的な書き方

まずは基本的な書き方から。if文を使って書きます。

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

if文は「もし、〜だったら」という書き方なので、

「もし条件に当てはまったら◯◯、そうでなかったら××」

という書き方になります。

ちなみに条件に当てはまった時の処理だけでよければ、elseは無くても大丈夫です。

<?php if (条件) : ?>
  条件に当てはまる場合の処理
<?php endif; ?>

条件が複数ある場合

<?php if (条件1) : ?>
  条件1に当てはまる場合の処理
<?php elseif (条件2) : ?>
  条件2に当てはまる場合の処理
<?php else: ?>
  全ての条件に当てはまらない場合の処理
<?php endif; ?>
  1. 条件1が当てはまったら条件1に当てはまる場合の処理
  2. 条件1に当てはまらなかったら条件2へ
  3. 条件2が当てはまったら条件2に当てはまる場合の処理
  4. 条件2も当てはまらなかったら全ての条件が当てはまらなかった場合の処理

となります。

ここも全ての条件に当てはまらない場合の処理が不要であれば、<?php else: ?>は無くても大丈夫です。

また<?php elseif (条件) : ?>は幾つでも設定可能です。

 

条件ではない場合

これまでは「もし条件1の場合」という書き方でしたが、「もし条件1ではない場合という逆の書き方も出来ます。

こちらが通常のif文。

<?php if (条件) : ?>
  条件に当てはまる場合の処理
<?php endif; ?>

そしてこちらが条件ではない場合。

<?php if (!条件) : ?>
  条件ではない場合の処理
<?php endif; ?>

条件の頭に「 ! 」を付けることで、条件の否定となります。

 

条件1かつ条件2(AND)

条件1かつ条件2が当てはまる場合の処理はこちら。

<?php if (条件1 && 条件2) : ?>
  条件1かつ条件2が当てはまる場合の処理
<?php endif; ?>

またそれぞれの条件の頭に「 ! 」を付けると、条件1かつ条件2が当てはまらない場合の処理となります。

<?php if (!条件1 && !条件2) : ?>
  条件1かつ条件2が当てはまらない場合の処理
<?php endif; ?>

 

条件1または条件2(OR)

条件1または条件2が当てはまる場合の処理はこちら。

<?php if (条件1 || 条件2) : ?>
  条件1または条件2が当てはまる場合の処理
<?php endif; ?>

 

条件1かつ条件2、または条件3の場合(ANDとORの組み合わせ)

ANDとORは組み合わせることも出来ます。

<?php if ( ( 条件1 && 条件2 ) || 条件3 ) : ?>
  条件1かつ条件2、または条件3が当てはまる場合の処理
<?php endif; ?>

あまり使う機会はないかも知れませんが参考までに。

 

条件の指定が複数ある場合

<?php if ( is_page( array( "条件1","条件2","条件3" ) ) ) : ?>
  固定ページの条件1と条件2と条件3の処理
<?php else: ?>
  固定ページの条件1と条件2と条件3以外の処理
<?php endif; ?>

これは固定ページ(is_page)の例ですが、条件にはページIDやカテゴリーIDなどいろいろあります。

その場合はarrayを使うと条件を複数指定できます。

例えば、固定ページを3ページ分ページIDで指定した場合は以下のようになります。

<?php if ( is_page( array( "10","20","30" ) ) ) : ?>
  固定ページのページID10とページID20とページID30の処理
<?php else: ?>
  固定ページのページID10とページID20とページID30以外の処理
<?php endif; ?>

条件分岐タグ一覧では省略していますが、よく使うのでぜひ覚えておきましょう。

 

WordPress条件分岐タグ一覧

それでは先ほど解説した書き方を元に、条件分岐タグを見ていきます。

トップページ

<?php if ( is_front_page() ) : ?>
  トップページのみの処理
<?php else: ?>
  トップページ以外の処理
<?php endif; ?>

ポイント

他のサイトでは<?php if ( is_home() || is_front_page() ) : ?>という書き方で紹介されている事も多いですが、当ブログのWordPressオリジナルテーマ解説では、
・トップページ → front-page.php
・記事一覧 → home.php
としていて、上記の場合だと「トップページまたは記事一覧ページ」となる為、is_front_page() だけにしています。

※ ご自身のトップページの作り方に合わせて変更して下さい。

 

固定ページ

<?php if ( is_page() ) : ?>
  固定ページのみの処理
<?php else: ?>
  固定ページ以外の処理
<?php endif; ?>

ポイント

これは固定ページ全てになります。WordPressオリジナルテーマの作り方④(固定ページ編)で解説している固定ページはpage-◯◯.phpですが、これも全て対象になります。

 

指定した固定ページ

<?php if ( is_page( "ページID" ) ) : ?>
  固定ページのみの処理
<?php else: ?>
  固定ページ以外の処理
<?php endif; ?>

固定ページのページIDは、ページ名にカーソルを乗せたら左下で確認できます。

 

記事一覧ページ

<?php if ( is_home() ) : ?>
  記事一覧ページのみの処理
<?php else: ?>
  記事一覧ページ以外の処理
<?php endif; ?>

ポイント

当ブログのWordPressオリジナルテーマ解説では、
・記事一覧 → home.php
としているので、記事一覧ページの条件分岐はis_home()としています。

 

個別記事ページ(カスタム投稿の個別記事ページ含む)

<?php if ( is_single() ) : ?>
  個別記事ページのみの処理(カスタム投稿含む)
<?php else: ?>
  個別記事ページ以外の処理
<?php endif; ?>

ポイント

カスタム投稿の個別記事ページはsingle-◯◯.phpなので、通常の個別記事ページだけでなくカスタム投稿の個別記事ページも含まれます。

 

個別記事ページ(カスタム投稿の個別記事ページを除く)

<?php if ( is_single() && !is_singular( "カスタム投稿タイプスラッグ" ) ) : ?>
  個別記事ページのみの処理(カスタム投稿除く)
<?php else: ?>
  個別記事ページ以外の処理
<?php endif; ?>

ポイント

これは、
個別記事ページかつ指定したカスタム投稿の個別記事ページは除く
となります。

カスタム投稿には「!」を付けて否定としています。

カスタム投稿タイプスラッグは以下で確認します(プラグイン Advanced Custom Fields 使用)

 

指定した個別記事ページ(カスタム投稿含む)

<?php if ( is_single( "ページID" ) ) : ?>
  指定した個別記事ページのみの処理(カスタム投稿含む)
<?php else: ?>
  指定した個別記事ページ以外の処理
<?php endif; ?>

ポイント

ページIDの確認方法は固定ページと同じで、投稿タイトルにカーソルを乗せて左下で確認できます。

 

アーカイブページ

<?php if ( is_archive() ) : ?>
  アーカイブページのみの処理
<?php else: ?>
  アーカイブページ以外の処理
<?php endif; ?>

ポイント

通常投稿の記事一覧ページ以外のアーカイブページになります。

例)カテゴリー一覧、日付別、タグ別、投稿者別、カスタム投稿記事一覧、カスタム投稿タクソノミー一覧など

 

カテゴリーページ

<?php if ( is_category() ) : ?>
  カテゴリーページのみの処理
<?php else: ?>
  カテゴリーページ以外の処理
<?php endif; ?>

ポイント

カスタム投稿のタクソノミー一覧は含みません。

 

指定したカテゴリーページ

<?php if ( is_category( "カテゴリーID" ) ) : ?>
  指定したカテゴリーページのみの処理
<?php else: ?>
  指定したカテゴリーページ以外の処理
<?php endif; ?>

カテゴリーIDは、投稿 → カテゴリー のカテゴリー名にカーソルを乗せたら左下で確認できます。

また、カテゴリーはIDでは無くスラッグでもOKです。

<?php if ( is_category( "カテゴリースラッグ" ) ) : ?>

スラッグはここで確認が出来ます。

この場合は<?php if ( is_category( "info" ) ) : ?>となりますね。

 

指定したカスタム投稿の個別ページ

<?php if ( is_singular( "カスタム投稿タイプスラッグ" ) ): ?>
  指定したカスタム投稿の個別ページのみの処理
<?php else: ?>
  指定したカスタム投稿の個別ページ以外の処理
<?php endif; ?>

カスタム投稿タイプスラッグは以下で確認します(プラグイン Advanced Custom Fields 使用)

 

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

<?php if ( is_post_type_archive() ) : ?>
  カスタム投稿のアーカイブページのみの処理
<?php else: ?>
  カスタム投稿のアーカイブページ以外の処理
<?php endif; ?>

 

指定したカスタム投稿タイプのアーカイブページ

<?php if ( is_post_type_archive( "カスタム投稿タイプスラッグ" ) ) : ?>
  指定したカスタム投稿タイプのアーカイブページのみの処理
<?php else: ?>
  指定したカスタム投稿タイプのアーカイブページ以外の処理
<?php endif; ?>

カスタム投稿タイプスラッグは以下で確認します(プラグイン Advanced Custom Fields 使用)

 

カスタムタクソノミーのアーカイブページ

<?php if ( is_tax() ) : ?>
  カスタムタクソノミーのアーカイブページのみの処理
<?php else: ?>
  カスタムタクソノミーのアーカイブページ以外の処理
<?php endif; ?>

 

指定したカスタムタクソノミーのアーカイブページ

<?php if ( is_tax( "タクソノミースラッグ" ) ) : ?>
  指定したカスタムタクソノミーのアーカイブページのみの処理
<?php else: ?>
  指定したカスタムタクソノミーのアーカイブページ以外の処理
<?php endif; ?>

タクソノミースラッグは以下で確認します(プラグイン Advanced Custom Fields 使用)

 

モバイル

<?php if ( wp_is_mobile() ) : ?>
  モバイル(スマホ・タブレット)のみの処理
<?php else: ?>
  モバイル(スマホ・タブレット)以外の処理
<?php endif; ?>

モバイル(スマホ・タブレット)以外なので、PCでの処理になります。

 

まとめ

その他、以下のような条件分岐もあります。

  • タグページ
  • 日付別、月別、年別アーカイブページ
  • 作成者ページ
  • 検索結果ページ
  • 404ページ

この辺は使う機会がほとんどないと思われるので書きませんでしたが、知りたい方は冒頭でも書きましたが以下のCodexでご確認下さい(上記以外にもたくさん種類があります)

条件分岐タグ - WordPress Codex 日本語版

 

WordPress案件の単価と作業効率を上げる!

Brain総合ランキング1位獲得 & 3日で500部突破

累計670部突破

クチコミ約370件
(平均スコア

今だけ!5つの無料特典あり🎁

👇画像をクリック

  • この記事を書いた人

じゅんぺい

タイ・バンコク在住のWeb制作フリーランス兼ブロガー▶︎37歳からWeb制作を開始▶︎コーディングとWordPressのオリジナルテーマ制作でこれまで80件以上納品▶︎Web制作中心の当ブログは月8.4万PV▶︎Twitterのフォロワーは5700人▶︎コーディングとWordPressのコンテンツを販売し、3日で500部突破&250万円&人気1位獲得 → 累計390万円突破

-WordPress