MENU

is_category()

is_category() は、WordPressの 現在表示されているページがカテゴリーアーカイブページかどうかを判定するためのテンプレートタグ です。カテゴリーに関連するページで条件分岐を行いたい場合に使われます。

目次

機能の説明

  • is_category() は、現在のページが カテゴリーアーカイブページ であるかを 真偽値(true または false で返します。
  • 特定のカテゴリーであるかを判定する場合は、 カテゴリーID、スラッグ、または名前 を引数に指定することも可能です。

シンプルなコード例

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

現在のページがカテゴリーアーカイブページであれば、メッセージが表示されます。

使い方の解説

  • is_category() は、WordPressテーマの category.phparchive.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() で複数のカテゴリーを判定できますか?

配列を引数 に渡すことで、複数のカテゴリーを判定できます。

if (is_category(array('news', 'events'))) {
    echo 'ニュースまたはイベントのカテゴリーアーカイブです。';
}

is_category() は投稿ページで使えますか?

いいえ、is_category()カテゴリーアーカイブページ専用 の関数です。投稿ページでは常に false を返します。

カテゴリーのIDで判定するにはどうすればよいですか?

カテゴリーIDを直接 引数として指定 できます。

if (is_category(5)) {
    echo 'IDが5のカテゴリーアーカイブです。';
}

まとめ

is_category() は、 カテゴリーアーカイブページを判定するための便利なテンプレートタグ です。

特定のカテゴリーに対する条件分岐が必要な場合、IDやスラッグを使って 柔軟な判定が可能 です。

さらに、get_the_category()single_cat_title() と組み合わせて使うことで、 カテゴリー情報を取得・表示 する処理を簡単に行えます。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次