WordPressのin_category()関数とは?使い方とis_category()との違いを解説【自作テーマ向け】
Contents
導入文
自作テーマを開発していると、「この投稿は特定のカテゴリかどうか判定したい」と感じる場面がありますよね。
そんなときに便利なのが、in_category()関数です。この記事では、その基本的な使い方から is_category() との違い、よくある注意点まで、中級者向けにわかりやすく解説します。
① in_category()とは?
in_category() は、現在の投稿が指定したカテゴリに属しているかどうかを判定する WordPress の条件分岐タグです。
in_category( 'news' )このように使うことで、投稿が news カテゴリに属しているかどうかをチェックできます。

② 基本的な使い方
以下のように、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()をループ外で使って反応しない →global $post;を指定しても動作不安定なので推奨されない- カテゴリスラッグのスペルミス →
get_categories()や管理画面で確認
⑦ よく使うパターン集
- アイキャッチをカテゴリごとに変えたい
- 特定のカテゴリだけデザインを変更したい
- 除外したいカテゴリをフィルタリングしたい
⑧ 関連記事(内部リンク)
まとめ
in_category() は、投稿の属するカテゴリを条件にデザインや表示を切り替えるのに便利な関数です。
ループ内で正しく使い、is_category() との違いを理解すれば、自作テーマでの表現の幅が大きく広がります。

