WordPressの条件分岐タグは、出力するページの種類などに応じて条件を判断し、処理する内容を分けたいときに使います。ここでは、条件分岐タグを使ったテーマカスタマイズの方法例をご紹介します。
条件分岐タグとは
条件分岐タグは、テンプレートファイル内で表示される内容や、特定のページ内容を表示する条件を設定するのに使います。
次の表は、Wordpressで使える条件分岐タグの一例です。
is_home() | メインページが表示されているかどうか |
---|---|
is_front_page() | フロントページが表示されているかどうか |
is_single() | 個別投稿ページが表示されているかどうか |
is_page() | 固定ページが表示されているかどうか |
is_category() | カテゴリーアーカイブページが表示されているかどうか |
条件分岐タグの基本的な内容については、下記ページでご紹介しています。
条件分岐タグを使ったテーマカスタマイズ
ここでは簡単な例として、「カテゴリーアーカイブページ」でカテゴリーごとに異なる表示をさせる場合を考えてみます。
例えば、スポーツに関するサイトで、次のカテゴリーを作成しているとします。
- 野球
- サッカー
- テニス
これらの「カテゴリーアーカイブページ」で、それぞれ異なる内容を表示をさせるためのカスタマイズを考えてみましょう。
テンプレート階層を考える
テーマのカスタマイズをするためには、テンプレートファイルの内容を修正します。まず、どのテンプレートファイルを修正すればよいのかを考えなくてはなりません。
WordPressでは、カテゴリーアーカイブページを表示するとき、次のような順番でテンプレートファイルを探してから出力します。
- category-slug.php
- category-ID.php
- category.php
- archive.php
- index.php
テーマの中に、「category-slug.php」が無ければ「category-ID.php」を探し、それも無ければ「category.php」を探して・・・という具合に、ページの種類ごとに使用されるテンプレートファイルの優先順位が決まっています。この優先順位のことを、テンプレート階層といいます。
今回は上記1~5のうち、テーマ内に下記ファイルが存在する場合を考えてみましょう。
- category.php
- archive.php
- index.php
カテゴリーアーカイブページの表示内容に特化してカスタマイズするのであれば、これらのうち最上位の「category.php」を修正すればよいということです。
条件分岐タグ 「is_category()」 の使い方
条件分岐タグは、PHPというプログラミング言語の「if文」と組み合わせて使うのが基本です。
<?php if (is_category()): ?>
このように書くことで、もしカテゴリーアーカイブページが表示されているならという意味合いになります。
そして、今回の例の「もし野球カテゴリーのアーカイブページが表示されているなら」のように、特定のカテゴリーを指定したい場合は、「is_category」の後に続く()内に、カテゴリースラッグまたはカテゴリーIDを記述します。
例えば、野球カテゴリーのスラッグが「baseball」であれば、下記のように書きます。
<?php if (is_category(baseball)): ?>
さらに、「また、もしサッカーカテゴリーのアーカイブページが表示されているなら」、「また、もしテニスカテゴリーのアーカイブページが表示されているなら」という文を続けるには、
<?php elseif (is_category(soccer)): ?>
<?php elseif (is_category(tennis)): ?>
という文を書き足します。elseifという部分が、「また、もし~」という意味に相当します。
これらを踏まえ、今回の目的である 「カテゴリーアーカイブページ」で野球、サッカー、テニスカテゴリーごとに異なる表示をさせるには、下記のように記述します。
<?php if (is_category(baseball)): ?>
野球カテゴリーアーカイブページでの表示内容
<?php elseif (is_category(soccer)): ?>
サッカーカテゴリーアーカイブページでの表示内容
<?php elseif (is_category(tennis)): ?>
テニスカテゴリーアーカイブページでの表示内容
<php endif; ?>
さて、今回のようなテーマカスタマイズは、条件分岐タグを使わなくてもテンプレート階層を考慮するだけで実行できます。
くわしく見ていきましょう。例えば、カテゴリーアーカイブページのテンプレート階層である、
- category-slug.php
- category-ID.php
- category.php
- archive.php
- index.php
のうち、使っているテーマの中に1や2のファイルが無く、3の「category.php」は存在する場合。1や2のファイルが無いなら、自分で作ってしまおうという考え方です。
今回の例であれば、下記ファイルを新たに作成します。
- 野球カテゴリー:「category-baseball.php」
- サッカーカテゴリー:「category-soccer.php」
- テニスカテゴリー:「category-tennis.php」
結果、カテゴリーアーカイブページに関するファイルは元々あった「category.php」を含めて4種類になりますよね?しかし、その後にカテゴリーアーカイブページ全てに共通するカスタマイズを施したくなった場合、4種類のファイルを全て修正しなければなりません。
つまり、カスタマイズ作業が面倒になってしまうわけです。
今回ご紹介したように、条件分岐タグを使えば、管理すべきテンプレートファイルの数が少なくて済むのです。