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の公式ページで紹介されています。