ワードプレスのin_category関数の使用方法・解説

概要

in_category 関数は、投稿情報のカテゴリーを調べるためのWordPressの関数です。この関数は、特定の投稿が指定したカテゴリーに属しているかどうかを確認する際に非常に便利です。以下のようなシナリオでよく使用されます。

  1. 特定のカテゴリーに属する投稿の表示を制御する。
  2. テーマ内で異なるスタイルやレイアウトをカテゴリーに基づいて変更する。
  3. カテゴリーごとのカスタムメッセージを表示する。
  4. 関連投稿を表示する際にカテゴリーを考慮する。
  5. 投稿に対して異なるウィジェットの表示を制御する。
  6. フィルタリング機能を追加して、カテゴリー別にコンテンツを表示する。
  7. アーカイブページでの表示内容をカテゴリーに応じて変更する。
  8. 健康、安全、セキュリティなどの重要なカテゴリーに関連する情報を強調表示する。

構文

in_category( $category, $post_id );

パラメータ

  • $category (string|int) – チェックしたいカテゴリーのIDまたはスラッグ。
  • $post_id (int) – (オプション)チェックする投稿のID。指定しない場合は、グローバルな $post が使用される。

戻り値

  • ブール値 (true または false)。指定したカテゴリーに投稿が属している場合は true、そうでない場合は false を返します。

関連する関数

使用可能なバージョン

  • この関数は、WordPress 1.5.0以降で使用可能です。

コアファイル内のパス

  • wp-includes/category.php

この関数のアクションでの使用可能性

アクション 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプル1: 特定のカテゴリーか確認

if ( in_category( 'news' ) ) {
    echo 'この投稿はニュースカテゴリーに属しています。';
}

このサンプルコードは、現在の投稿が ‘news’ カテゴリーに属しているか確認し、メッセージを表示します。

サンプル2: 投稿リストでのカテゴリー確認

if ( in_category( 5, $post ) ) {
    echo '<span class="highlight">特別カテゴリー投稿</span>';
}

投稿ID 5に属するカテゴリーがある場合に特別なスタイルを適用して表示します。

サンプル3: カテゴリーベースのカスタムロジック

if ( in_category( 'events' ) ) {
    get_template_part( 'template-parts/content', 'event' );
} else {
    get_template_part( 'template-parts/content', 'default' );
}

条件に応じて異なるテンプレートを読み込むことで、イベント投稿には特別な表示を行います。

サンプル4: カテゴリーの取得と表示

$categories = get_the_category();
foreach ( $categories as $category ) {
    if ( in_category( $category->term_id ) ) {
        echo '<p>投稿カテゴリー: ' . esc_html( $category->name ) . '</p>';
    }
}

すべてのカテゴリーを取得し、各カテゴリーについて in_category を使って表示するサンプルです。

サンプル5: カウント条件でのメッセージ表示

if ( in_category( 'tutorials' ) && get_comments_number() > 5 ) {
    echo 'このチュートリアルには多くのコメントがあります!';
}

特定のカテゴリーに存在し、コメント数が5以上の場合に特定のメッセージを表示するサンプルです。

この関数について質問する


上の計算式の答えを入力してください