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

Contents
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.php
や archive.php
、header.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. 関連関数
in_category()
の使い方:投稿ページ内でカテゴリーを判定するhas_category()
の使い方:ループ内でのカテゴリー判定に便利is_tax()
とは?:カスタムタクソノミーのアーカイブページを判定する
7. まとめ
is_category()
はカテゴリーアーカイブページの判定に使う関数- スラッグ・ID・名前で特定のカテゴリーを指定可能
- 投稿ページでは
in_category()
を使う必要がある - 自作テーマではアーカイブテンプレート内で活用すると便利