is_category()
は、WordPressの 現在表示されているページがカテゴリーアーカイブページかどうかを判定するためのテンプレートタグ です。カテゴリーに関連するページで条件分岐を行いたい場合に使われます。
目次
機能の説明
is_category()
は、現在のページが カテゴリーアーカイブページ であるかを 真偽値(true
またはfalse
) で返します。- 特定のカテゴリーであるかを判定する場合は、 カテゴリーID、スラッグ、または名前 を引数に指定することも可能です。
シンプルなコード例
if (is_category()) {
echo 'これはカテゴリーアーカイブページです。';
}
現在のページがカテゴリーアーカイブページであれば、メッセージが表示されます。
使い方の解説
is_category()
は、WordPressテーマのcategory.php
やarchive.php
で使われることが多く、ページの出力内容を条件分岐で制御するために利用します。- 特定のカテゴリーアーカイブかどうかも 引数を使って確認 できます。
使用例
if (is_category('news')) {
echo 'これはニュースカテゴリーのアーカイブです。';
} elseif (is_category(array('events', 'announcements'))) {
echo 'イベントまたはお知らせのカテゴリーアーカイブです。';
} else {
echo 'その他のカテゴリーアーカイブです。';
}
- このコードでは、
is_category()
を使ってカテゴリーが「news
」か、または「events
」「announcements
」のいずれかに該当するかを確認します。 - 条件に応じて 異なるメッセージを表示 します。
一緒に使うことが多い関連タグ
get_the_category()
投稿が属する カテゴリー情報を取得 するためのテンプレートタグです。
$categories = get_the_category();
if (!empty($categories)) {
echo 'カテゴリー: ' . esc_html($categories[0]->name);
}
- この例では、現在の投稿が属するカテゴリーの名前を取得して表示しています。
is_category()
と組み合わせて、アーカイブページや投稿でカテゴリー情報を表示する際に便利です。
single_cat_title()
現在の カテゴリーのタイトル を表示するテンプレートタグです。
if (is_category()) {
single_cat_title('カテゴリー: ');
}
このコードは、カテゴリーアーカイブページで カテゴリーのタイトルを表示 します。
追加情報を取得したい場合
現在のカテゴリーの詳細情報を取得する
$category = get_queried_object();
if ($category && is_category()) {
echo 'カテゴリー名: ' . esc_html($category->name) . '<br>';
echo 'スラッグ: ' . esc_html($category->slug) . '<br>';
echo '説明: ' . esc_html($category->description);
}
get_queried_object()
を使って、現在のカテゴリーの詳細情報を取得します。
出力できる情報
- name: カテゴリー名
- slug: カテゴリーのスラッグ(URL フレンドリーな名前)
- description: カテゴリーの説明
想定されるトラブル
is_category()
が意図した結果を返さない
テンプレートのキャッシュが古いため、最新のカテゴリー情報が反映されていない。
解決方法
- キャッシュのクリア を行います。
- 使用するテーマやプラグインが適切にフックされているか確認します。
引数を渡しても意図したカテゴリーで判定されない
渡した引数がカテゴリーのID、スラッグ、または名前と一致していない可能性があります。
解決方法
カテゴリーの IDやスラッグが正しいか再確認 してください。
Q&A
まとめ
is_category()
は、 カテゴリーアーカイブページを判定するための便利なテンプレートタグ です。
特定のカテゴリーに対する条件分岐が必要な場合、IDやスラッグを使って 柔軟な判定が可能 です。
さらに、get_the_category()
や single_cat_title()
と組み合わせて使うことで、 カテゴリー情報を取得・表示 する処理を簡単に行えます。
コメント