WordPressでサイトを構築することで、デザインと機能の両面でできることの選択肢の幅は大きく広がります。
テーマの開発を深めていくと、なんらかの特定のタイプのページ、カテゴリ、または投稿に照準を絞って、そのタイプにあった特別なものを作る必要が出てくることがありますよね。
※WordPressでのテーマ開発については次の記事を参照してください。
そんなとき、条件論理(conditional logic)を利用することで、仕事をはるかに簡単にすすめることができることをご存知でしょうか。
条件論理とは、プログラミング言語(今回はPHP)の強力な機能で、コードを使用して特定の条件が存在するかどうかをチェックし、その条件が満たされていれば特定のことを行うようにするというものです。
これの簡単な例としては、ユーザーが現在サイトのホームページにいるかどうかを確認するというようなものがあげられます。条件付きロジックを使用することで、当該の状況でロードするコンテンツ(スライダー、その他の特別なコンテンツ)を選ぶということも出来ます。
WordPressには、あらゆる種類のシナリオをテストできるように、ソフトウェアに組み込まれた便利な条件タグ(conditional tag)が数多くあります。それらは使い勝手よく文書化されており、サイトに高度な機能をもたらしてくれます。
本記事では、比較的一般的に使用される条件付きタグをいくつか紹介し、サイトにそれらを実装する方法について解説します。
条件タグの使用上の注意
条件タグはPHPコードの一部であり、きちんとアップデートされているアクティブなテーマに入っている必要があります※。テーマ内で条件論理を使用できる場所はたくさんありますが、テーマのアクティベーションをまだ行っていない場合は、テーマファイルの仕組みを理解するために、WordPressのテンプレート階層を理解することをお勧めします。
※テーマについては以下を参照してください。
さらに、きちんと手入れされてアクティブな状態のサイトに新しいコードを実装する前にも、開発環境をセットアップして最初にテストするのが最善です。 たった一つのPHPの誤動作で、サイトに恐ろしい「死の白いスクリーン」が与えられることを忘れないでください。
1.is_home()
開発者の間で大きな混乱を招いているタグです。タグの見た目から、サイトのホームページをチェックするために使用されると思われがちですが、そうではありません。
実際には、投稿ページとして割り当てられたページが検索されます。投稿ページは、[設定]> [ワードプレスダッシュボード内で読む]で設定されます。デフォルトでは、WordPressはホーム・ページを使用して投稿を一覧表示しますが、ほとんどのサイトでは代わりに静的なホーム・ページを使用する傾向があります。
したがって、たとえば、「Blog」という名前のページを投稿ページとして割り当てた場合、このページをis_home()が探すことになります。
2.is_front_page()
逆に、is_front_page()は、静的であるかどうかにかかわらず、サイトのホームとして設定されているページを探します。 テーマ作成を学んでいるときには当たり前に思えないかもしれませんが、どのタグを使用するかが重要です。
このタグの優れている点は、ホーム・ページとして後で異なったページを割り当てるつもりでいても、正しい場所に照準を合わせたままでいられるというところです。 ページをターゲットにするより明示的な方法はありますが、これは、変更があった場合にもそれをきちんとカバーしてくれます。
3.is_single() and is_page()
これらのタグはそれぞれ、2つの機能を実行します。
is_single()は、現在のURLが投稿であるかどうかを調べます。 標準的なブログ投稿、添付ファイルかもしれませんし、またはカスタム投稿のタイプに属している可能性もあります。
同様に、現在のURLがページの場合、is_page()はtrueを返します。 デフォルトでは、両方のタグは、ページや投稿の傘下にあるコンテンツをターゲットにします。 これは多くの条件タグの共通スレッドです。
しかし、IDやスラッグを追加すれば、これらのタグを利用して特定の投稿やページをターゲットにすることもできます。
配列を使用すると、複数のコンテンツをターゲットにすることができます。
4.is_tax() and has_term()
タクソノミーは、コンテンツがサイト上で整理される仕方に対して大きな役割を果たします。
最も一般的なのはカテゴリとタグです。カテゴリとタグは独自の条件タグを持ちます。 しかし、WordPressでは独自のタクソノミーを作成できます。
たとえば、サイトに音楽レビューが含まれていて、「ジャンル」というタクソノミーがあるとします。 そこから、「Rock」、「Hip-Hop」、「Jazz」など、そのタクソノミー内の特定のジャンルの音楽をリストすることができます。
is_tax()はタクソノミーのアーカイブページを対象としています。 音楽レビューの例では、このタグは、特定のジャンルごとにアーカイブページを開いているときに起動します(有効になります)。
has_term()は、属しているタクソノミーに基づいて現在の投稿をターゲットにするために使用されます。 これは、たとえば、サイトの各ジャンルの音楽に投稿用の特別なグラフィックを追加したい場合に便利です。
5.is_page_template()
テーマのテンプレート階層に精通したら、独自のカスタムページテンプレートを作成することができます。
is_page_template()では、現在のページテンプレートをターゲットにすることができます(カスタムかどうかは関係ありません)。
ページテンプレートがそもそも使用されているかをチェックしたり、特定のものを探したりすることができます。
しかし、特定のページテンプレートを探すときは注意が必要です。 このタグはファイル名の存在をチェックするので、そのテンプレートの名前を変更すると条件が機能しなくなる可能性があります。 ファイル名の変更を反映するようにコードを更新する必要があります。
All Conditions Met
条件論理の使用方法を簡単に紹介しただけですが、より多くのことを学ぶ意欲を惹き起こすことができれば幸いです。
条件論理を習得すれば、そうでなければ不可能に近い方法でサイトをカスタマイズすることができます。 それらによって、テーマの見た目とレイアウトをきめ細かくコントロールしながら、CMSの利点をよりよく得ることができます。
※本記事は、How to Add Conditional Logic to Your WordPress Themeを翻訳・再構成したものです。