1. テーマ
  2. 条件分岐タグによるテーマカスタマイズ

条件分岐タグによるテーマカスタマイズ

2016/7/19

WordPress条件分岐タグは、出力するページの種類などに応じて条件を判断し、処理する内容を分けたいときに使います。ここでは、条件分岐タグを使ったテーマカスタマイズの方法例をご紹介します。

条件分岐タグとは

条件分岐タグは、テンプレートファイル内で表示される内容や、特定のページ内容を表示する条件を設定するのに使います。

次の表は、Wordpressで使える条件分岐タグの一例です。

is_home() メインページが表示されているかどうか
is_front_page() フロントページが表示されているかどうか
is_single() 個別投稿ページが表示されているかどうか
is_page() 固定ページが表示されているかどうか
is_category() カテゴリーアーカイブページが表示されているかどうか

条件分岐タグの基本的な内容については、下記ページでご紹介しています。

条件分岐タグを使ったテーマカスタマイズ

ここでは簡単な例として、「カテゴリーアーカイブページ」でカテゴリーごとに異なる表示をさせる場合を考えてみます。

例えば、スポーツに関するサイトで、次のカテゴリーを作成しているとします。

  • 野球
  • サッカー
  • テニス

これらの「カテゴリーアーカイブページ」で、それぞれ異なる内容を表示をさせるためのカスタマイズを考えてみましょう。

テンプレート階層を考える

このような「テーマのカスタマイズ」をするためには、テンプレートファイルの内容を書き換える必要があります。なので、まずはどのテンプレートファイルをカスタマイズするのかを考えなくてはなりません。

今回の例では、「カテゴリーアーカイブページ」に表示する内容をカスタマイズするんでしたね?Wordpressでは、カテゴリーアーカイブページを表示するとき、次のような順番でテンプレートファイルを探してから出力します。

  1. category-slug.php
  2. category-ID.php
  3. category.php
  4. archive.php
  5. index.php

テーマの中に、「category-slug.php」が無ければ「category-ID.php」を探し、それも無ければ「category.php」を探して・・・という具合に、ページの種類ごとで使用されるテンプレートファイルの優先順位が決まっています。この優先順位のことを、テンプレート階層といいます。

今回は上記1~5のうち、テーマ内に下記ファイルが存在する場合を考えてみましょう。

  • category.php
  • archive.php
  • index.php

つまり、今回の例のように「カテゴリーアーカイブページ」の表示内容に特化してカスタマイズするのであれば、これらのうち最上位の「category.php」を修正すればよいということです。

私が超初心者だった頃の失敗談
あるサイトで今回の例と似たようなカスタマイズを、「カテゴリーアーカイブ」だから「archive.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; ?>

さて、今回のようなテーマカスタマイズは、条件分岐タグを使わなくてもテンプレート階層を考慮するだけで実行できます。

どういうことかというと、例えばカテゴリーアーカイブページのテンプレート階層である、

  1. category-slug.php
  2. category-ID.php
  3. category.php
  4. archive.php
  5. index.php

のうち、使っているテーマの中に1や2のファイルは無いが、3の「category.php」は存在する場合。1や2のファイルが無いなら、自分で作ってしまおうという考え方です。

今回のカスタマイズ例で言えば、下記ファイルを新たに作成することで反映されます。

  • 野球カテゴリー:「category-baseball.php」
  • サッカーカテゴリー:「category-soccer.php」
  • テニスカテゴリー:「category-tennis.php」

結果、カテゴリーアーカイブページに関するファイルは元々あった「category.php」を含めて4種類になりますよね?しかし、その後にカテゴリーアーカイブページ全てに共通するカスタマイズを施したくなった場合、4種類のファイルを全て修正しなければなりません。

つまり、カスタマイズ作業が面倒になってしまうわけです。このことは、下記の記事でもご紹介しています。

今回ご紹介したように、条件分岐タグを使えば、管理すべきテンプレートファイルの数が少なくて済むのです。

おすすめの書籍

小さなお店&会社の WordPress超入門

WordPressでビジネスサイトを作るために必要な、基本的な知識が理解できる“超”入門書。Web制作に必要なHTML・CSS・PHPなどの専門知識がなくても読み進められる1冊です。SEO(検索エンジン最適化)やセキュリティの対策についても解説されています。

おすすめのテーマ

WordPressテーマ「NEXTAGE (tcd021)」

WordPressテーマ「LAW」

コーポレートサイト(企業サイト)向けのテーマ。第一印象で信頼性や専門性を的確にアピールし、Webサイトのゴールである「お問い合わせ」まで自然に繋がっていく“導線”にこだわったテンプレートです。

カテゴリー

ビジネスサイトを作りたいあなたに

おすすめのテーマ、あります。