WordPressの便利な条件分岐(if文)の書き方まとめ

WordPressのif文による、便利な条件分岐の使い方の備忘録です。

基本の書き方

設定した条件に当てはまる場合のみ処理を実行するifの基本的な書き方です。

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

別の条件を設定する場合はelseifを追加し、条件に当てはまらなかった場合の処理はelseで実行します。条件が一つだけのときは、elseifとelseは省略できます。

<?php if( 条件1 ) : ?>
  // 条件1に当てはまる場合
<?php elseif( 条件2 ) :?>
  // 条件1に当てはまらず、条件2に当てはまる場合
<?php else : ?>
  // どの条件も当てはまらない場合
<?php endif; ?>

複数の条件

一度で複数の条件を設定したい場合は、論理演算子の「||(OR)」または「&&(AND)」を使用します。

<?php if( 条件1 || 条件2 ) : ?>
  // 条件1または条件2に当てはまる場合
<?php endif; ?>
<?php if( 条件1 && 条件2 ) : ?>
  // 条件1と条件2の両方に当てはまる場合
<?php endif; ?>

条件の否定

条件の最初に「!」をつけることで、その条件に当てはまらない場合の条件分岐を設定できます。

<?php if( !条件 ) : ?>
  // 条件に当てはまらない場合
<?php endif; ?>

WordPressの条件分岐

WordPressでよく使われる、ページごとの条件分岐のまとめです。
例えば、固定ページにだけに表示させたいパーツは、条件に「is_page()」と設定したif文でトップページや投稿ページでは非表示にすることができます。

ホームページ(トップページ)のみ

<?php if( is_home() || is_front_page() ) : ?>
  // ホームページのみ表示
<?php endif; ?>

「is_front_page()」は、固定ページをフロントページに設定している場合の条件分岐です。

投稿ページのみ

<?php if( is_single() ) : ?>
  // 投稿ページのみ表示
<?php endif; ?>

投稿ページのみ表示したい場合は、「is_single()」を設定します。IDやスラッグなど個別の投稿ページのみを設定することも可能です。

<?php if( is_single('13') ) : ?>
  // ID 13の投稿ページのみ表示
<?php endif; ?>

数字を設定すると、該当するIDの投稿ページのみ表示されます。
タイトルや投稿スラッグを数字で設定している場合、「13」の投稿が表示されることがあります。

<?php if( is_single('Irish Stew') ) : ?>
  // タイトルが”Irish Stew”の投稿ページのみ表示
<?php endif; ?>
<?php if( is_single('beef-stew') ) : ?>
  // 投稿スラッグが”beef-stew”の投稿ページのみ表示
<?php endif; ?>

タイトルやスラッグで分岐させたい場合は、テキストでそのまま設定できます。

<?php if( array( 13, 17, 'beef-stew', 'Irish Stew' ) ) : ?>
  // 条件のいずれかに該当する投稿ページのみ表示
<?php endif; ?>

複数の条件のいずれかに該当する投稿ページのみ表示させたい場合は、配列で条件を設定します。

固定ページのみ

<?php if( is_page() ) : ?>
  // 固定ページのみ表示
<?php endif; ?>

固定ページのみ表示したい場合は、「is_page()」を設定します。投稿ページのみの設定と同様、IDやスラッグなど個別の固定ページのみを設定することも可能です。

<?php if( is_page('32') ) : ?>
  // ID 32の固定ページのみ表示
<?php endif; ?>
<?php if( is_page('about-us') ) : ?>
  // 投稿スラッグが"about-us"の固定ページのみ表示
<?php endif; ?>

シングルページのみ

<?php if( is_singular() ) : ?>
  // シングルページのみ表示
<?php endif; ?>

固定ページ、個別投稿ページ、添付ファイルページなどのシングルページのみ表示する場合は、「is_singular()」を設定します。

<?php if( is_singular('bar') ) : ?>
  // カスタム投稿タイプが"bar"の場合のみ表示
<?php endif; ?>

上記のように、カスタム投稿タイプによる設定が可能です。

アーカイブページのみ

<?php if( is_archive() ) : ?>
  // アーカイブページのみ表示
<?php endif; ?>

カテゴリー、タグ、日付など各アーカイブページのみ表示する場合は、「is_archive()」を設定します。

カテゴリーページのみ

<?php if( is_category() ) : ?>
  // カテゴリーページのみ表示
<?php endif; ?>

カテゴリーページのみ表示する場合は、「is_category()」を設定します。
カテゴリーのIDやスラッグによって条件分岐することも可能です。

<?php if( is_category('7') ) : ?>
  // ID 7のカテゴリーページのみ表示
<?php endif; ?>
<?php if( is_category('blue-cheese') ) : ?>
  // カテゴリースラッグが"blue-cheese"のカテゴリーページのみ表示
<?php endif; ?>

カテゴリーID、スラッグを複数指定する場合は、配列で指定します。

<?php if( is_category(array( 7, 'blue-cheese', 'Stinky Cheeses' )) ) : ?>
  // 条件のいずれかに該当するカテゴリーページのみ表示
<?php endif; ?>

タグ別ページのみ

<?php if( is_tag() ) : ?>
  // タグのアーカイブページのみ表示
<?php endif; ?>

タグのアーカイブページのみ表示する場合は、「is_tag()」を設定します。
タグのスラッグによって条件分岐することも可能です。

<?php if( is_tag('mild') ) : ?>
  // スラッグに'mild'のついたタグのアーカイブページのみ表示
<?php endif; ?>
<?php if( is_tag(array( 'sharp', 'mild', 'extreme' )) ) : ?>
  // スラッグに'sharp'、'mild'、'extreme'のいずれかがついたタグのアーカイブページのみ表示
<?php endif; ?>

複数のスラッグを設定する場合は、配列を使用します。

検索結果のページのみ

<?php if( is_search() ) : ?>
  // 検索ページでのみ表示
<?php endif; ?>

検索結果のページのみ表示する場合は、「is_search()」を設定します。

404ページのみ

<?php if ( is_404() ) : ?>
  // 404ページでのみ表示
<?php endif; ?>

404 Not Found エラーページのみ表示する場合は、「is_404()」を設定します。

その他の条件分岐タグ

WordPressのテンプレートをカスタマイズする際にも、条件分岐はよく使われます。

上記でまとめた条件分岐タグ以外にも、便利なタグがWordPressの公式ページで紹介されています。

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

Share on Twitter
関連記事
Custom Taxonomy Orderでカテゴリーを任意の順番に並び替える方法
Custom Taxonomy Orderでカテゴリーを任意の順番に並び替える方法
ACFで作成したカスタムフィールドを検索対象に含めるプラグインACF: Better Searchの使い方
ACFで作成したカスタムフィールドを検索対象に含めるプラグインACF: Better Searchの使い方
WordPressでタグクラウドを設置する方法
WordPressでタグクラウドを設置する方法