WordPressのテーマをカスタマイズする上で欠かせないテクニックに、条件分岐タグ(Conditional Tag)という便利なタグがあります。
普通のブログを作るくらいだとめちゃめちゃ使うという程でもないかもしれませんが、WordPressを使って一般的なWebサイトを構築しようとする場合かなり必要になるタグです。
今までこの条件分岐タグを使いたいと思った時には、Googleで検索してヒットする他のサイトを参考にさせて頂きましたが、自分の使い勝手が良いように整理したいと思います。
(1)メインページかどうかで条件分岐
is_home()
ブログのメインページが表示されているかどうかは is_home() を使います。
<?php if(is_home()): ?> この部分は、Wordpressサイトのメインページの場合表示されます。 <?php endif; ?>
TOPページにブログのように投稿記事を表示させ、例えば、「古い記事へ」「新しい記事へ」のようなページも is_home() では true が返ってきてしまい、上記が表示されてしまいます。「TOPページだけに表示させたい!」という場合には、下記のように!is_paged() を一緒に使います。
if(is_home() && !is_paged()):
<?php if(is_home() && !is_paged()): ?> この部分は、Wordpressサイトのメインページの場合表示されます。 メインページでも、2ページ目、3ページ目などの複数ページは含みません。 <?php endif; ?>
(2)個別投稿ページ(シングルページ)かどうかで条件分岐
is_single()
各記事の個別ページ(シングルページ)かどうかを判断します。パラメータを渡してもっと細かく条件を付ける事もできます。
<?php if(is_single('10')) :> 投稿IDが"10"の場合表示されます。 <?php elseif(is_single(array(2, 5, 11, 21))) :> 投稿IDが"2""5""11""21"のいずれかの場合表示されます。 <?php endif ?>
複数のページIDで指定する場合は、それらのページIDを「array()」で囲む必要があります。
パラメータはページIDの他にも記事タイトルや投稿スラッグを指定する事もできます。
投稿スラッグで指定する場合は下記のようになります。
<?php if(is_single('coffee_jiten')) :> "coffee_jiten" という投稿スラッグの記事の場合表示されます。 <?php elseif(is_single(array(17,'coffee_bean','CAFE LOG'))) :> 投稿IDが"17",スラッグが"coffee_bean"または、タイトルが"CAFE LOG"という投稿の場合表示されます。 <?php endif ?>
(3)個別ページかどうかで条件分岐
is_page()
ここでは、ブログ記事とは別に、個別に作れるページの条件分岐をせいりしています。
パラメータをわたして細かく条件分岐して使う事もできます。
<?php if(is_page('12')): ?> ページIDが"12"の場合表示されます <?php elseif(is_page('CAFE LOG')): ?> ページのタイトルが"CAFE LOG"の場合表示されます。 <?php elseif(is_page('coffee_jiten')): ?> ページのスラッグが"coffee_jiten"の場合表示されます。 <?php endif; ?>
(4)カテゴリーページかどうかで条件分岐
is_category()
あるカテゴリーのアーカイブページが表示されているかどうかを判断します。WordPress で一般的なWebサイトを作る時でも、コンテンツをカテゴリーを使って分けている手法をよく使います。
パラメータを指定する事で、細かく条件分岐できます。
<?php if(is_category('3')): ?> カテゴリーIDが"3"の記事の場合表示されます。 <?php elseif(is_category('COFFEE')): ?> カテゴリーの名前が"COFFEE"の記事の場合表示されます。 <?php elseif(is_category('cafe')): ?> カテゴリースラッグが"cafe"の記事を表示します。 <?php elseif(in_category( array( 1,2 ))): ?> カテゴリーIDが "1, 2 "に含まれる記事の場合表示されます <?php else: ?> 上記の条件以外の記事を表示します。 <?php endif; ?>
(5)タグで条件分岐
is_tag() / has_tag()
is_tag() はタグのアーカイブページが表示されているかどうかを判断します。
<?php if(is_tag('coffee')): ?> "coffee"タグのついた記事を表示します。 <?php elseif(is_tag(array('hogehoge','cafe'))): ?> "hogehoge", "cafe" タグのついた記事を表示しています。 <?php endif; ?>
have_tag() はその記事が指定したタグを使ってしるかどうかを判断できます。ループの中で使います。
<?php if(has_tag('cafe')): ?> この記事には "cafe" タグがついている場合表示されます。 <?php elseif(has_tag(array('coffee','hogehoge'))): この記事には "coffee, hogehoge"のいずれかのタグがついている場合表示されます。 <?php endif; ?>
(6)検索結果ページが表示されているかどうかで条件分岐
is_search()
検索結果ページであるかをを表示しているかどうかを判断します。下のコードでは検索クエリ(検索したキーワード)と検索結果数も表示しています。
<?php if (is_search()): ?> <?php global $query_string; query_posts($query_string . "&post_type=post"); global $wp_query; $total_results = $wp_query->found_posts; ?> <p>"<?php the_search_query(); ?>" で検索した結果:<?php echo $total_results; ?>件</p>