サイトを作っているとページ毎に表示したい部分を変えたい場合があります。ワードプレスでサイトを作る時にもありますよね。
ワードプレスの場合は、システムによって作られており、共通部分をページ毎に変える事が難しい場合があります。
そんな時に使えるのが、条件によって分岐して ページ毎などに表示する部分を変える方法です。
ワードプレスでは、条件分岐タグといって ホームやカテゴリー毎や固定ページなどによって表示する部分を変える事が出来るタグが存在します。
例えば カテゴリー毎にサイドバーを変えたい場合やタイトル部分に画像を表示したいなどにも使えます。
条件分岐タグを使えば 表示方法のバリエーションを増やす事が簡単に出来るんですね。
では、ワードプレスの条件分岐タグを紹介します。
1.ホームとそれ以外のページの条件分岐
<?php if(is_home()): ?> //ブログのホームであればここに記述したものを表示する <?php else: ?> //それ以外のページではここに記述したものを表示する <?php endif; ?>
サイトを作っていると、ホームのページだけを変えたい場合が多くあると思いますので、一番使える条件分岐タグになると思います。
しかし ワードプレスの場合は、固定ページをトップページにする設定が出来ますので、そのような場合には、 is_front_page()によって分岐する必要があります。
<?php if(is_front_page()): ?> //サイトのトップページであればここに記述したものを表示する <?php else: ?> //それ以外のページではここに記述したものを表示する <?php endif; ?>
ワードプレスには、投稿ページと固定ページというものがあります。
投稿ページは、ブログの投稿ページという事で、固定ページは、日々更新するブログではなく固定したページを作る時に使うページという感じです。
ちょっと解りにくいかもしれませんが、ワードプレスのシステムがそうなってるって事です。
では、投稿ページ(ブログページ)の条件分岐タグを紹介します。
2.投稿ページ(ブログページ)の条件分岐
投稿ページは、カテゴリによって分ける事が出来ますので、まずは、投稿ページのカテゴリを条件分岐するタグについて紹介します。
投稿ページのカテゴリを分岐するタグは、is_category()になります。
<?php if(is_category('5')): ?> //カテゴリIDが"5"の記事にここに記述したものを表示する。 <?php endif; ?>
こんな感じで分岐すれば、カテゴリによって表示する部分を変える事が出来るんです。
<?php elseif(in_category( array( 1,2,3 ) )): ?> //カテゴリIDが"1,2,3"の記事にここに記述したものを表示する。 <?php endif; ?>
上記のようにすれば、複数のカテゴリの分岐をする事も出来るんですね。
投稿ページ毎の条件分岐タグを紹介します。
投稿ページの分岐するタグは、is_single()になります。
<?php if(is_single('10')) : ?> //投稿ページIDが"10"の記事にここに記述したものを表示する。 <?php endif; ?> <?php elseif(is_single ( array( 1,2,3 ) )): ?> //投稿ページIDが"1,2,3"の記事にここに記述したものを表示する。 <?php endif; ?>
こうする事で、投稿ページ毎に分岐する事が出来るんですね。
次は、固定ページの条件分岐タグを紹介します。
3.固定ページの条件分岐
まずは、固定ページ毎の条件分岐タグを紹介します。
固定ページの分岐するタグは、is_page()になります。
<?php if(is_page ('10')) : ?> //固定ページIDが"10"の記事にここに記述したものを表示する。 <?php endif; ?>
こうすれば、固定ページ毎に分岐する事が出来ます。
ワードプレスの固定ページには、親、子といった階層を付ける事ができますが、子なのかどうかを判断する条件分岐タグはありません。
しかしfunctions.php で関数を作れば、子なのかを分岐する事が出来ます。
ワードプレスのfunctions.phpに下記を追加します。
そうすることで、固定ページが どの親なのかを分岐する事が出来るようになるんですね。
function is_subpage() { global $post; if (is_page() && $post->post_parent){ $parentID = $post->post_parent; return $parentID; } else { return false; }; };
functions.phpに追加したら、後は、表示したい部分に下記のコードを加えればOK!!
<?php if(is_page(5) && $post->post_parent): ?> //固定ページIDが"5"の子であればここに記述したものを表示する <?php else: ?> //それ以外のページではここに記述したものを表示する <?php endif; ?> <?php if (is_page(5) || $post->post_parent === 5): ?> //固定ページIDが"5"の親と子であればここに記述したものを表示する <?php endif; ?>
こうする事で、固定ページの親の子ページである事を分岐する事が出来るんです。
親をカテゴリとすると カテゴリ毎に表示を変える事が出来るという事ですね。
他にもis_tag()は、タグのアーカイブページを分岐する事が出来ますし、is_search()は、検索結果のページを分岐する事が出来ます。
ワードプレスの条件分岐タグを使う事で、いろいろな表示方法をする事が出来るようになるんですね。