WordPress:カスタマイズするなら覚えておきたい条件分岐について

  • Posted on
  • Category : WordPress
WordPress:カスタマイズするなら覚えておきたい条件分岐について

WordPressを使ってサイトやブログを構築する際、例えば「一覧と詳細でサイドコンテンツを変えたい」とか「カテゴリーによって表示内容をガラッと変えたい」のように「○○の時に○○する」といったことをしたい場合に用いるのが条件分岐です。WordPressには便利な条件分岐タグが沢山用意されており、これらを用いることで様々なことができるので、先述したように特定の条件で何かをさせたいというカスタマイズをしたい方は参考にしてみてください。

2015年3月23日 追記
「$is_iphone(), $is_chrome(), $is_IE(), …etc」の部分が不適切でしたので修正しました。

WordPress:カスタマイズするなら覚えておきたい条件分岐について 目次

  1. 条件分岐の使い方
    1. 条件がひとつの時 #1
    2. 条件がひとつの時 #2
    3. 条件が複数の時 #1
    4. 条件が複数の時 #2
  2. 論理演算子を使う
  3. 条件分岐タグ

1. 条件分岐の使い方

条件分岐とは、簡単に説明すると「指定された条件に合うか・合わないかを判断し、判断に応じて処理を行う」というものになり、例えばWordPressの場合であればこれを利用することによって、同じテンプレートを使用していても条件に応じて全く違う見栄えにしたり、処理を行うといったことが可能です。

条件分岐にはswitch文というものもありますが、ここで紹介しているのはいずれもif文を用いた形のもので、以下のように記述することで条件に応じて処理をそれぞれ異なるものにすることができます。

※if文にはendifの有無や括弧を省略するなどのように、以下で紹介している以外の記述方法もあります。

1-1. 条件がひとつの時 #1

条件がひとつの時には、以下のように記述します。
例えば、特定のページで何かをしたい時、「条件1」の箇所に特定のページを指定して、あとは処理内容を記述すれば指定した特定のページのみで処理を実行させることができます。

<?php if ( 条件1 ): ?>
	// 条件1に該当する場合の処理
<?php endif; ?>

1-2. 条件がひとつの時 #2

先ほどと同様に条件がひとつの時には、以下のような記述をする方法もあります。
例えば、先ほどと同様に「条件1」の箇所に特定のページなどを指定して処理内容を記述すれば指定した特定のページのみで処理を実行させることができますが、更にそれ以外のページでも何かをしたいという時には「条件1に該当しない場合の処理」の箇所に処理を記述することで実装することができます。

<?php if ( 条件1 ): ?>
	// 条件1に該当する場合の処理
<?php else: ?>
	// 条件1に該当しない場合の処理
<?php endif; ?>

1-3. 条件が複数の時 #1

条件が複数ある場合は、以下のように記述します。
少し具体的な例を出すと、例えばカテゴリーページでカテゴリーによって見た目や処理などを変えたいという場合に、「条件1」や「条件2」の箇所には各カテゴリーのスラッグやIDを指定し、あとはそれぞれの処理を記述していけば、カテゴリー毎に違う見た目や処理を実装することができます。

<?php if ( 条件1 ): ?>
	// 条件1に該当する場合の処理
<?php elseif ( 条件2 ): ?>
	// 条件1に該当せず 且つ 条件2に該当する場合の処理
<?php elseif ( 条件3 ): ?>
	// 条件1・2に該当せず 且つ 条件3に該当する場合の処理
<?php endif; ?>

全く違うものになるのであれば専用テンプレート作ればって感じですが、ほんの一部だけ変更するだけであればこちらの方法を使うことでひとつのテンプレートで条件によって見た目や処理を変えることができます。

1-4. 条件が複数の時 #2

こちらも先ほどと同様に条件が複数ある場合の記述になるのですが、どの条件にも該当しない場合の処理も行いたい場合は以下のようにelseも用いて記述します。

<?php if ( 条件1 ): ?>
	// 条件1に該当する場合の処理
<?php elseif ( 条件2 ): ?>
	// 条件1に該当せず 且つ 条件2に該当する場合の処理
<?php else: ?>
	// どちらにも該当しない場合の処理
<?php endif; ?>

目次へ

2. 論理演算子を使う

上記で簡単に条件分岐の使い方を紹介してきましたが、更に論理演算子というものを利用することで条件から外れた場合のみを指定したり、複数の条件を指定するといったことが可能になります。
ここで紹介する以外にも種類はありますが、とりあえず下記3つは使用頻度が高めだと思うので覚えておいて損はないと思います。

「and」 又は 「&&」

「条件1 および 条件2が共にTRUEの場合にTRUE」というものになり、条件を複数指定したい時に使えます。

<?php if ( 条件1 && 条件2 ): ?>
	// ここに処理
<?php endif; ?>

「or」 又は 「||」

「条件1 または 条件2のどちらかがTRUEの場合にTRUE」というものになり、例えば同じ処理なのに複数の条件で実装したいからとelseifを幾つも記述しているような場合は、これを使うことで何度も記述することなくシンプルな記述で実装することができます。

<?php if ( 条件1 || 条件2 ): ?>
	// ここに処理
<?php endif; ?>

具体的な使用例として「個別投稿ページ 又は 固定ページの場合に〇〇をする」としたい場合に、以下のように記述することで実装できます。

<?php if ( is_single() || is_page() ): ?>
	// 個別投稿ページ 又は 固定ページの場合に実装したい処理
<?php endif; ?>

「!」

「条件がTRUEでない場合にTRUE」というものになり、例えば全ページで実装するけれど特定のページでは実装したくないなどの使い方ができます。

<?php if ( ! 条件 ): ?>
	// ここに処理
<?php endif; ?>

具体的な使用例として「固定ページ以外で○○をする(固定ページでは○○しない)」としたい場合に、以下のように条件の前に「!」を記述することで実装できます。

<?php if ( ! is_single() ): ?>
	// 固定ページ以外で実装したい処理(固定ページで実装したくない処理)
<?php endif; ?>

演算子を用いた例文はCodexにも少し掲載されているので、使ったことがない人はこちらも参考になると思います。

目次へ

3. 条件分岐タグ

WordPressで用意されている条件分岐タグの中から、個人的によく使うものやよく使われると思うものを並べてみました。

is_home()
メインブログページが表示されている場合。
is_front_page()
サイトのフロントページが表示されている場合。
is_single()
個別投稿ページが表示されている場合で、パラメータを指定することも可能です。
例えば下記のように記述することで「個別投稿ページ 且つ IDが10」といった条件になり、他にもスラッグやタイトルの指定をしたり、パラメータを複数指定することもできます。
<?php if ( is_single( '10' ) ): ?>
	// IDが10の個別投稿ページで行いたい処理
<?php endif; ?>
is_sticky()
記事投稿画面にある「この投稿を先頭に固定表示」にチェックが入っている投稿が表示されている場合で、パラメータにIDを指定することが可能です。
is_page()
固定ページが表示されている場合で、is_single()と同じような形でパラメータを指定することも可能です。
例えば下記のように記述することで「固定ページ 且つ IDが○○」といった条件を指定してそれぞれ処理を行い、条件に当てはまらない固定ページにもそれらとは別の処理を行うことができます。
<?php if ( is_page( '1' ) ): ?>
	// IDが1の固定ページのみで行いたい処理
<?php elseif ( is_page( '3' ) ): ?>
	// IDが3の固定ページのみで行いたい処理
<?php else: ?>
	// それ以外の固定ページで行いたい処理
<?php endif; ?>
is_category()
カテゴリーページが表示されている場合で、IDやスラッグによるパラメータ指定も可能です。
例えばカテゴリーによって全く違う見せ方したい時や各カテゴリーページにアイキャッチのような画像を置きたい時などに使えます。
is_tag()
タグのアーカイブページが表示されている場合で、パラメータ指定すればもっと限定させることができます。
is_archive()
各アーカイブページが表示されている場合で、パラメータ指定すればもっと限定させることができます。
is_search()
検索結果のページが表示されている場合。
例えば見た目は一覧とほとんど変わらず、検索ワードや検索ヒット数を出力させたい時に使えます。
is_404()
404(エラーページ)が表示されている場合。
is_paged()
表示中のページが複数ページにわたる場合。
is_singular()
これまで紹介してきたものと少しだけ違うタイプで、こちらはis_single()is_page()is_attachment()のいずれかが真の場合にというものです。
is_tax()
タクソノミーのアーカイブページが表示されている場合で、パラメータ指定すればもっと限定させることができます。
is_post_type_archive()
カスタム投稿のアーカイブページが表示されている場合で、パラメータ指定すればもっと限定させることができます。
is_preview()
プレビュー時にのみ処理をしたいときに使えます。
wp_is_mobile()
ユーザーがモバイルデバイスで閲覧している時に処理を行いたい場合に使えます。

上記で意図した動きになってくれない場合は、条件となるデバイスなども自分で細かく指定したオリジナルの関数を作って代用すれば意図した形で実装できます。
方法については以前備忘録書いているので、こちらを参考にしてみてください。

$is_iphone, $is_chrome, $is_IE, …etc

※当初「$is_iphone(), $is_chrome(), $is_IE(), …etc」という形で紹介していましたが、正しくは$is_iphone$is_chromeというように、括弧を記述しない形となります。

こちらはまだ実際に使ったことがないんですが、WordPressにはブラウザのユーザエージェントを調べて条件分岐させることができるものも用意されており、例えば$is_iphoneならばiPhoneかどうか、$is_IEならIEかどうかという形で、これらを利用することでブラウザ毎に処理をわけることができます。
その他にどのようなものがあるかは以下で確認できます。

is_super_admin()
ユーザーがネットワークの特権管理者かどうかをチェックするもので、管理者の場合のみ表示させたいものなどある場合に便利です。
is_user_logged_in()
会員サイトなどのようにログイン時と非ログイン時とで処理を分けたい場合に使えます。
また、上で紹介したis_super_admin()でも同じようなことができますが、みぞれさんが「[WordPress]稼働中のテーマに手を加えたい時に!囲った部分がログインユーザにしか見えなくなるテンプレートタグ|ウェビメモ」という記事で紹介しているように、稼働中のWordPressでテーマをほんの少しいじったりしたい時などにも便利です。

※会員サイトでこのような使い方をする場合はis_super_admin()を使用した方が良いですね。

上記で条件分岐タグを沢山紹介してきましたがここにあるのはまだほんの一部で、作成者アーカイブの場合に使うis_author()や日付別アーカイブの場合に使うis_date()、アイキャッチや小テーマが使われているかどうかなど、他にも便利な条件分岐タグが多数用意されています。

その他どのような条件分岐タグがあるのか気になる方や条件分岐タグについての詳細を知りたい方は、以下よりそれぞれ確認できます。

目次へ

以上、WordPressをカスタマイズするなら覚えておきたい条件分岐について紹介しました。
大幅に内容や見た目が異なる場合などは条件分岐ではなくテンプレート自体を分けたほうがわかりやすかったり実装しやすいということもありますが、少しだけであればこのような条件分岐を使ってひとつのテンプレートで様々な場面で見栄えを変更したりするのも容易にできて非常に便利です。
これからWordPressを使ってみようと思っている方や最近使い始めたという方は覚えておいて損はないと思います。

Back to Top

WordPress:カスタマイズするなら覚えておきたい条件分岐について

WordPress:カスタマイズするなら覚えておきたい条件分岐について

/ WordPress

Tagged with:

NxWorld

Sorry... doesn't support your browser

To get the best possible experience using our site we recommend that you upgrade to a modern web browser.NxWorldではご利用中のブラウザサポートはしていません。
Internet Explorerのアップグレード行う、もしくはその他のブラウザを使用しての閲覧をお願いします。