WordPressで記事の一覧を表示するアーカイブページを作っていて、カテゴリーやスラッグごとにデザインを変えたい、と思った方に今回の記事はお役に立てると思います。
今回ご紹介するin_categoryとis_categoryという関数を使うことで実現できるのですが、なんだか一文字違いでどういう使い分けをしたらいいか悩みますよね。
どちらも条件分岐を行う関数で、in_categoryは個別記事の中で使うことが多く、is_categoryはアーカイブページで使う条件分岐の関数とされています。
その違いと使い方を分かりやすく、すぐに使えるように解説していきたいと思います!
is_categoryとin_categoryの違い
定義の部分はこんな感じかなという理解で良いかなと私は思っていますので、ここではイメージをつかんでいただくための解説に留めたいと思います。
どちらもアーカイブページ内で使用できる関数なので、目的に合わせて使い分けていきましょう。
is_categoryの使い方
では早速is_category()から見ていきたいと思います。
コードはアーカイブページを例に書いていきます。
記述方法としては、アーカイブページ(archive.php)内に下記のように記述します。
<?php if(is_category(1)) : ?>
// カテゴリーIDが「1」の記事一覧を表示するときの処理
<?php endif; ?>
<?php if(is_category(”news”)) : ?>
// スラッグが「news」の記事一覧を表示するときの処理
<?php endif; ?>
こうすることでカテゴリーIDが「1」の時のデザインや処理とスラッグが「news」の時のデザインと処理を固有のものを用意することができます。
カテゴリーIDの調べ方はこちらの記事で解説しているので参考にしてみてください。
条件分岐の種類
①カテゴリーのIDを指定して条件分岐させる方法
<?php if(is_category(1)) : ?>
// カテゴリーIDが「1」の記事一覧を表示するときに処理
<?php endif; ?>
②カテゴリースラッグを指定して条件分岐させる方法
<?php if(is_category('news')) : ?>
// カテゴリースラッグ"news"の記事一覧が表示されているときの処理を書く
<?php endif; ?>
③「特定のカテゴリー以外」という条件で分岐させる方法
<?php if(!is_category(’news')) : ?>
// カテゴリースラッグ"news"以外の記事一覧が表示されているときの処理を書く
<?php endif; ?>
④複数のカテゴリーIDやスラッグを指定して条件分岐させる
<?php if(is_category(1, 'news')) : ?>
// カテゴリーIDが1かスラッグが"news"のいずれかの記事一覧が表示されているときの処理
<?php endif; ?>
<?php if(is_category(1,2)) : ?>
// カテゴリーIDが1か2のいずれかの記事一覧が表示されているときの処理
<?php endif; ?>
in_categoryの使い方
in_category()も同じ様に記述していきます。
<?php if(in_category(1)) : ?>
// カテゴリーIDが「1」の記事一覧を表示するときに処理
<?php endif; ?>
<?php if(in_category(2)) : ?>
// カテゴリーIDが「2」の記事一覧を表示するときに処理
<?php endif; ?>
条件分岐の種類
①記事が属するカテゴリーIDを指定して条件分岐させる方法
<?php if(in_category(1)) : ?>
// カテゴリーIDが1のカテゴリーに属した記事のときの処理
<?php endif; ?>
②記事が属するスラッグを指定して条件分岐させる方法
<?php if(in_category('news')) : ?>
// カテゴリースラッグ"news" のカテゴリーに属した記事のときの処理
<?php endif; ?>
③「特定のカテゴリー以外」という条件で分岐させる方法
<?php if(!in_category('news')) : ?>
// カテゴリースラッグ"news"以外のカテゴリーに属した記事のときの処理
<?php endif; ?>
④複数のカテゴリーIDやスラッグを指定して条件分岐させる
<?php if(in_category(array(1, 'news'))) : ?>
// カテゴリーIDが1かスラッグが"news"のいずれかの記事一覧が表示されているときの処理
<?php endif; ?>
<?php if(in_category(array(1, 2))) : ?>
// カテゴリーIDが1か2のいずれかの記事一覧が表示されているときの処理
<?php endif; ?>
これでカテゴリーごとの目的や訴求したい内容にあ合わせて見せ方をデザインできますね。
非常にシンプルで簡単に使える関数なので、是非活用してみてください。
それではまた次回の記事でお会いしましょう!
コメント