WordPressのin_category()関数とは?使い方とis_category()との違いを解説【自作テーマ向け】

導入文

自作テーマを開発していると、「この投稿は特定のカテゴリかどうか判定したい」と感じる場面がありますよね。
そんなときに便利なのが、in_category()関数です。この記事では、その基本的な使い方から is_category() との違い、よくある注意点まで、中級者向けにわかりやすく解説します。

① in_category()とは?

in_category() は、現在の投稿が指定したカテゴリに属しているかどうかを判定する WordPress の条件分岐タグです。

in_category( 'news' )

このように使うことで、投稿が news カテゴリに属しているかどうかをチェックできます。

WordPressのin_category()関数の基本的な使い方を図解で説明

② 基本的な使い方

以下のように、if 文の中で in_category() を使うのが一般的です。

<?php if ( in_category( 'news' ) ) : ?>
  <p>この投稿は「お知らせ」カテゴリです。</p>
<?php endif; ?>
  • カテゴリスラッグ、ID、または配列で複数指定も可能
  • the_loop(ループ)内で使用するのが前提

③ 配列で複数カテゴリを判定する

<?php if ( in_category( array( 'news', 'events' ) ) ) : ?>
  <p>この投稿は「お知らせ」または「イベント」カテゴリです。</p>
<?php endif; ?>
  • 複数カテゴリに対応できるのが大きなメリット

④ 注意点

  • is_single() との組み合わせで使用するケースが多い
  • ループ外では使えない($post が有効でないため)
  • カテゴリ判定にIDを使う場合は、IDの数値を確認してから

⑤ is_category()との違い

比較項目in_category()is_category()
対象投稿が属するカテゴリを判定現在のページがカテゴリページかを判定
使用場所投稿ページ内のループ内カテゴリアーカイブページなど
よくある用途投稿ごとの出し分けカテゴリーページ専用テンプレートなど
in_category()とis_category()の違いを比較した図

⑥ よくあるミスと対処法

  • in_category()ループ外で使って反応しないglobal $post; を指定しても動作不安定なので推奨されない
  • カテゴリスラッグのスペルミスget_categories() や管理画面で確認

⑦ よく使うパターン集

  • アイキャッチをカテゴリごとに変えたい
  • 特定のカテゴリだけデザインを変更したい
  • 除外したいカテゴリをフィルタリングしたい

⑧ 関連記事(内部リンク)

まとめ

in_category() は、投稿の属するカテゴリを条件にデザインや表示を切り替えるのに便利な関数です。
ループ内で正しく使い、is_category() との違いを理解すれば、自作テーマでの表現の幅が大きく広がります。