WordPressサイトを制作している時に「このカテゴリーの一覧ページではボタンを表示させたい」とか「あのカテゴリーの記事ページだけこのテキストを表示させたい」とか、特定のカテゴリーに応じて変化を加えたいことってありますよね。
今回はそんな時に確認してほしいカテゴリーによる条件分岐の書き方をまとめました。
カテゴリーの記事一覧ページでよく使うis_categoryの条件分岐
記事一覧を表示させるためにループをさせている箇所や、アーカイブページでは条件分岐のためにis_categoryというタグを利用することが多いです。
実際の書き方を見て行きましょう。
指定箇所がカテゴリーの記事一覧だった場合に条件分岐させる
1 2 3 |
<?php if(in_category()) : ?> // 記事一覧表示である場合の処理を書く <?php endif; ?> |
カテゴリーIDで特定のカテゴリーを指定して条件分岐させる
1 2 3 |
<?php if(is_category(9)) : ?> // カテゴリーIDが9の記事一覧が表示されているときの処理を書く <?php endif; ?> |
カテゴリースラッグで特定のカテゴリーを指定して条件分岐させる
1 2 3 |
<?php if(is_category('news')) : ?> // カテゴリースラッグ"news"の記事一覧が表示されているときの処理を書く <?php endif; ?> |
「特定のカテゴリー以外」という条件を指定して分岐させる
1 2 3 |
<?php if(!is_category('blog')) : ?> // カテゴリースラッグ"blog"以外の記事一覧が表示されているときの処理を書く <?php endif; ?> |
複数のカテゴリーIDやスラッグを指定して条件分岐させる
1 2 3 |
<?php if(!is_category(9, 'news')) : ?> // カテゴリーIDが9、スラッグが"news"のいずれかの記事一覧が表示されているときの処理を書く <?php endif; ?> |
個別記事のページでよく使うin_categoryの条件分岐
記事一覧の部分ではis_categoryによる条件分岐が多いのに対し、single.phpで表示されるような記事詳細ページではis_categoryタグを使って条件分岐することが多いです。
同じように実際のコードを見てみましょう。
記事がカテゴリーに属している場合の条件分岐
1 2 3 |
<?php if(in_category()) : ?> // カテゴリーに属した記事のときの処理を書く <?php endif; ?> |
WordPressで作るサイトではどのカテゴリーにも属していない記事というのはまずないですが、基本的な記述はこのような形になります。
記事が属するカテゴリーをカテゴリーIDで指定して条件分岐させる
1 2 3 |
<?php if(in_category(9)) : ?> // カテゴリーIDが9のカテゴリーに属した記事のときの処理を書く <?php endif; ?> |
記事が属するカテゴリーをカテゴリースラッグで指定して条件分岐させる
1 2 3 |
<?php if(in_category('news')) : ?> // カテゴリースラッグ"news" のカテゴリーに属した記事のときの処理を書く <?php endif; ?> |
「特定のカテゴリー以外」に属する記事という条件を指定して分岐させる
1 2 3 |
<?php if(!in_category('blog')) : ?> // カテゴリースラッグ"blog"以外のカテゴリーに属した記事のときの処理を書く <?php endif; ?> |
記事が属するカテゴリーを複数のカテゴリーIDやスラッグで指定して条件分岐させる
1 2 3 |
<?php if(in_category(array(9, 'news'))) : ?> // カテゴリーIDが9、スラッグが"news"のいずれかのカテゴリーに属した記事のときの処理を書く <?php endif; ?> |
まとめ
is_categoryとin_categoryは見た目がよく似ていますが条件分岐として使う場面は異なるので、よくタグの意味を理解して使用しましょう。
大まかには今回紹介したようにis_categoryはアーカイブ表示での条件分岐でよく使い、in_categoryは個別記事表示のテンプレートでよく使うと覚えておけば良いでしょう。
こうしたよく使うコードをいくつか知っておくだけでもWordPressの制作効率は大きく変わります。
以上、WordPressで特定のカテゴリーの時だけ表示させる条件分岐の書き方でした。