MENU

wp_get_post_categories()– Function –

wp_get_post_categories()は、指定した投稿に関連付けられたカテゴリーのIDを取得するためのWordPressテンプレートタグです。カテゴリーIDの一覧を配列形式で返し、分類された情報を処理するのに適しています。

目次

機能の説明

wp_get_post_categories()は、特定の投稿に紐づけられたカテゴリーのIDを取得し、配列として返します。返されるのはIDだけですが、get_category()などを併用することで詳細情報も取得可能です。カスタム投稿タイプでも使えるため、カテゴリーに基づくコンテンツの分類表示などに活用されます。

シンプルなコード例

$category_ids = wp_get_post_categories(123);  
print_r($category_ids);

このコードでは、投稿IDが123の投稿に付けられたカテゴリーIDの配列を取得し、print_r()で表示します。

使い方の解説

この関数は、投稿IDを渡すことでその投稿に付与されたカテゴリーIDの配列を取得します。引数により、取得するデータの形式を調整することも可能です。

引数

$post_id (int)

取得する投稿のIDを指定します。この引数は必須です。

$args (array)

取得結果を制御するオプションを指定する引数です。

  • fields (string) : 結果を特定のフィールドに限定します。'all''ids''names'などが指定可能です。

戻り値

array

指定した投稿のカテゴリーIDまたはカテゴリー情報を含む配列を返します。

オプション

fields (string)

取得するカテゴリー情報の形式を指定します。以下の値を指定可能です:

  • ids : カテゴリーIDの配列(デフォルト)
  • names : カテゴリー名の配列
  • all : WP_Termオブジェクトの配列

使用例

$categories = wp_get_post_categories(get_the_ID(), array('fields' => 'names'));  
if (!empty($categories)) {  
    echo 'この投稿のカテゴリー: ' . implode(', ', $categories);  
} else {  
    echo 'カテゴリーはありません。';  
}

この例では、現在の投稿に紐づくカテゴリー名を取得し、カンマ区切りで表示しています。カテゴリーがない場合は「カテゴリーはありません」と表示されます。

一緒に使うことが多い関連タグ

get_the_category()

get_the_category()は、投稿に紐づくカテゴリー情報をWP_Termオブジェクトの配列で取得するタグです。

$categories = get_the_category();  
if (!empty($categories)) {  
    foreach ($categories as $category) {  
        echo '<a href="' . get_category_link($category->term_id) . '">';  
        echo esc_html($category->name);  
        echo '</a> ';  
    }  
} else {  
    echo 'カテゴリーはありません。';  
}

このコードでは、現在の投稿に付与されたカテゴリーのリンクを生成し、画面に表示します。get_the_category()で取得したカテゴリーごとにループ処理を行い、カテゴリーのリンクを出力します。

追加情報を取得したい場合

wp_get_post_categories()はカテゴリーIDを取得するため、詳細な情報が必要な場合はget_category()get_the_category()を組み合わせると便利です。さらに、カテゴリーのリンクを作成するにはget_category_link()を使用します。

get_category() で取得できるカテゴリー情報

$category = get_category(5); // カテゴリーID 5の情報を取得
print_r($category);

出力できる情報

  • term_id: カテゴリーのID
  • name: カテゴリーの名前
  • slug: カテゴリーのスラッグ(URLフレンドリーな名前)
  • description: カテゴリーの説明
  • count: そのカテゴリーに属する投稿数

想定されるトラブル

投稿IDが正しく指定されていない

無効な投稿IDを渡した場合、空の配列が返されます。

解決方法

投稿IDが存在することをis_numeric()などで事前に確認しましょう。

フィールドオプションが間違っている

オプションに不正なfields値を渡すと、エラーになります。

解決方法

'ids''names''all'のいずれかを指定してください。

Q&A

すべての投稿にカテゴリーが設定されていない場合、何が返されますか?

空の配列が返されます。そのため、結果を取得した後はempty()でチェックするのがおすすめです。

特定のカテゴリーIDに基づいて投稿を取得する方法はありますか?

WP_Queryを使用することで、特定のカテゴリーに属する投稿を取得できます。

$query = new WP_Query(array('category__in' => array(5)));  
if ($query->have_posts()) {  
    while ($query->have_posts()) {  
        $query->the_post();  
        the_title('<h2>', '</h2>');  
    }  
    wp_reset_postdata();  
}

まとめ

wp_get_post_categories()は、指定した投稿のカテゴリーIDを取得する便利なテンプレートタグです。

カテゴリーのIDだけでなく、fieldsオプションを活用することで名前やオブジェクト形式で取得することもできます。また、get_the_category()などの関連タグと組み合わせることで、カテゴリー情報を活用した表示が可能になります。

カスタマイズ例

1