2017/10/07 152views

【WordPress】PHPのifを使った条件分岐でヘッダーの表示をカテゴリーわけする

WordPressでテーマを自作や改変しているとき、PHPの知識がないと条件分岐の基本である if をつかった条件分岐さえまともに出来ません。

今回は、私がこのブログで使っているヘッダー部分をカテゴリーや記事別に分ける方法を紹介したいと思います。

スポンサーリンク

if での条件分岐はPHPの基本

if を使っての条件分岐はPHPの基本であり、PHPで何かしらのプログラムを組む場合には確実につかうと言っても過言ではありません。

しかし、WordPressを使用して簡単な改変を行なう程度であれば、if の条件分岐の仕様をすべて覚える必要はありませんのでご安心ください。

カテゴリー別に条件分岐をする場合

トップページとカテゴリーページ,その他のページを条件分岐で分ける場合、下記のような記述をします。

<?php if(is_home()): ?>
// トップページである場合の処理を書く
<?php elseif(in_category('2')) : ?>
// カテゴリーIDが"2"の記事一覧である場合の処理を書く
<?php else: ?>
// 上記以外である場合の処理を書く
<?php endif; ?>

ここにヘッダー部分のHTMLを記述しておけば、 トップページ,カテゴリーID”2”のページ,その他のページ と別々のヘッダーを表示することが可能になります。

ですが、この条件分岐だとカテゴリーID”2″に含まれる記事のヘッダーはその他のページで設定したヘッダーが表示されます。

理由は、記事ページはトップページではなく、カテゴリーID”2″の記事一覧でもありません

よって、その他の処理からヘッダーの表示を読み込むことになります。

記事ページをカテゴリー別に条件分岐する場合

基本的なコードは変わらないのですが、上記と赤線の部分が違います。

<?php if(is_home()): ?>
// トップページである場合の処理を書く
<?php elseif(is_category('2')) : ?>
// カテゴリーIDが"2"に属した記事である場合の処理を書く
<?php else: ?>
// 上記以外である場合の処理を書く
<?php endif; ?>

このコードの場合、カテゴリーID”2″に属した記事はヘッダーの処理が変わりますが、カテゴリーID”2″の記事一覧ページの表示は変わりません

記事一覧と記事の2つに対応させるため、2つもコードを書くのは面倒ですので簡単な方法を。

演算子 or を使用して簡単に条件分岐させる

演算子の or(||) というのは、○○または○○である場合という意味で使われます。

ですので、条件分岐をこのようにしてやると記事一覧と記事ページが同時に条件分岐されます。

<?php if(is_home()): ?>
// トップページである場合の処理を書く
<?php elseif(in_category('2') or is_category('2')) : ?>
// カテゴリーIDが"2"の記事一覧または、それに属する記事である場合
<?php else: ?>
// 上記以外である場合の処理を書く
<?php endif; ?>

これで、カテゴリーID”2″の記事一覧ページと、カテゴリーID”2″に属する記事を同時に条件分岐させることが出来ます。

まとめ

通常の雑記ブログではあまり使用することのない条件分岐の方法だとは思いますが、私のようにTOPページのみがワンカラム方式でカテゴリーわけされている場合には有効な条件分岐です。

カテゴリーごとに特色を出せますので、雑記ブログでありながら特化ブログのように見せかけることが出来る便利な方法ですね。

サイドバーなどもこの方法で分別することが出来ますので、自作テーマを作ってみたいけどPHPなんて少しもわからないという人は参考にしてみてください。

合わせてこちらもどうぞ

【オススメ】WordPressのブログカードを「寝ログ」式で改造してみる

スポンサーリンク

関連記事