【初心者向け】is_category()とは?使い方・引数・活用例までわかりやすく解説

はじめに

WordPressでテーマをカスタマイズしていると、「この処理はカテゴリページだけに表示したい」というケースがよくあります。
そんなときに役立つのが、条件分岐タグ is_category() です。

本記事では、is_category()の基本から活用例、注意点までをわかりやすく解説します。

is_category()とは?

is_category()は、現在表示されているページがカテゴリ一覧ページかどうかを判定するための関数です。
以下の図で、この関数がどのように動作するのかを視覚的に確認してみましょう。

is_category()関数の使い方を示す図解
図1:is_category()が返す結果を視覚的に説明しています。

上記の図解にあるように、is_category()関数は現在表示されているページがカテゴリページであればtrueを返し、そうでない場合はfalseを返します。
この仕組みを理解したうえで、次に進みましょう。

is_category();

この関数は、真偽値(true / false)を返すシンプルな仕組みになっています。

基本的な使い方

カテゴリページでのみ処理を実行したい場合は、以下のように記述します。

<?php
if ( is_category() ) {
    echo 'これはカテゴリページです。';
}
?>

解説

  • is_category()true を返すのは、カテゴリアーカイブページ(特定カテゴリの記事一覧ページ)のみです。
  • 投稿や固定ページでは false を返します。

特定のカテゴリを指定する方法

スラッグで指定する場合

<?php
if ( is_category('news') ) {
    echo 'Newsカテゴリです。';
}
?>

カテゴリIDで指定する場合

<?php
if ( is_category(5) ) {
    echo 'IDが5のカテゴリです。';
}
?>

複数のカテゴリを指定する場合(配列)

<?php
if ( is_category(array('news', 'blog', 7)) ) {
    echo 'いずれかのカテゴリです。';
}
?>

よくある活用例

1. カテゴリ別にレイアウトを変える

<?php
if ( is_category('event') ) {
    get_template_part('category-event');
} else {
    get_template_part('category-default');
}
?>

2. 特定カテゴリにだけ広告を表示

<?php
if ( is_category('news') ) {
    echo '<div class="ad-banner">ニュースカテゴリ専用広告</div>';
}
?>

3. カテゴリによってCSSクラスを変更

<body <?php body_class( is_category('special') ? 'special-cat' : '' ); ?>>

is_category()とよく似た関数との違い

in_category()との違い

関数判定対象
is_category()カテゴリページかどうか
in_category()記事が特定カテゴリに属するかどうか

例:

// 投稿内で使う
if ( in_category('news') ) {
    echo 'この投稿はNewsカテゴリです。';
}

is_tax()との違い

  • is_tax()カスタムタクソノミーのアーカイブページ判定に使います。
  • カテゴリ(category)はタクソノミーの一種ですが、is_category()は専用です。

注意点と補足情報

  • is_category()カテゴリ一覧ページでのみtrueを返します。
  • 投稿や固定ページ内では常にfalseになります。記事内でカテゴリを判定したい場合は in_category() を使いましょう。
  • 条件分岐タグは、wp フック以降に使用するのが安全です。functions.php内などでは注意が必要です。

まとめ

  • is_category()は、カテゴリページかどうかを判定するシンプルな関数。
  • スラッグ・ID・配列など、柔軟な指定が可能。
  • 表示内容やレイアウトをカテゴリごとに変えたいときに非常に便利。
  • in_category()is_tax()との違いを理解して、適切に使い分けることが重要。

参考リンク・関連記事