is_category()の使い方と注意点【自作テーマ向け解説】

WordPressのロゴが表示されたノートパソコンとカテゴリーアイコン。is_category()の使い方を解説するブログのアイキャッチ画像。

1. はじめに

WordPressの条件分岐タグ is_category() は、カテゴリーアーカイブページで特定の処理を実行したい場合に便利な関数です。本記事では、自作テーマを使っている方を対象に、is_category() の基本的な使い方から、よくある間違い、自作テーマでの活用例まで詳しく解説します。

2. is_category()とは?

is_category() は、現在表示されているページがカテゴリーのアーカイブページであるかどうかを判定するための関数です。

if ( is_category() ) {
    // カテゴリーアーカイブページで実行される処理
}

この関数は、カテゴリーのスラッグ・ID・名前を引数として受け取ることもできます。

is_category('news'); // スラッグが 'news' のカテゴリー
is_category(5);      // IDが 5 のカテゴリー
is_category('お知らせ'); // 名前が「お知らせ」のカテゴリー

3. 使用例

3-1. すべてのカテゴリーアーカイブページで条件分岐

if ( is_category() ) {
    echo 'これはカテゴリーアーカイブページです。';
}

3-2. 特定のカテゴリーに限定する

if ( is_category('news') ) {
    echo 'ニュースカテゴリーのページです。';
}

if ( is_category(['news', 'blog']) ) {
    echo 'ニュースまたはブログカテゴリーのページです。';
}

4. よくある間違いと注意点

投稿ページで使えない

is_category()カテゴリーのアーカイブページでしか true を返しません。投稿詳細ページで特定のカテゴリーかを判定したい場合は、in_category()の使い方と注意点をご覧ください。

if ( is_single() && in_category('news') ) {
    // 投稿ページが 'news' カテゴリーに属している
}

タクソノミーとの混同

カスタムタクソノミーを使用している場合は is_tax() を使用します。is_category() は通常の「カテゴリー(category)」専用です。

使用場所の注意

is_category()category.phparchive.phpheader.php など、アーカイブページで呼び出されるテンプレート内で使用しましょう。single.php で使っても常に false になります。

5. 自作テーマでの活用例

自作テーマでよく使われるのは、カテゴリーによって見出しやデザインを出し分けるパターンです。

<h1 class="page-title">
  <?php
  if ( is_category('news') ) {
      echo 'お知らせ一覧';
  } elseif ( is_category('blog') ) {
      echo 'ブログ記事一覧';
  } else {
      single_cat_title();
  }
  ?>
</h1>

このような使い分けは、archive.phpのカスタマイズ方法でも紹介しています。

6. 関連関数

7. まとめ

  • is_category() はカテゴリーアーカイブページの判定に使う関数
  • スラッグ・ID・名前で特定のカテゴリーを指定可能
  • 投稿ページでは in_category() を使う必要がある
  • 自作テーマではアーカイブテンプレート内で活用すると便利

8. 参考リンク