カテゴリー情報の取得
2020-07-09
カテゴリ情報を取得する際の関数として、get_the_category()がよく使われるので、少しまとめてみます。
1 |
<?php get_the_category( $id ); ?> |
ある投稿に付けられた全てのカテゴリを出力する場合は、下記のようになります。
1 2 3 4 5 6 7 8 9 |
$categories = get_the_category(); $separator = ' '; $output = ''; if ( $categories ) { foreach( $categories as $category ) { $output .= '<a href="' . get_category_link( $category->term_id ) . '">' . $category->cat_name . '</a>' . $separator; } echo trim( $output, $separator ); } |
この例はループの中で使わなければなりません。
先頭のカテゴリーの名前のみ表示する場合は、下記のようになります。
1 2 |
$category = get_the_category(); echo $category[0]->cat_name; |
ループの外で使用する場合
1 2 3 |
global $post; $categories = get_the_category( $post->ID ); echo $categories; |
となります。
戻り値
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
term_id // (整数) カテゴリー ID name // (文字列) カテゴリー名 slug // (文字列) カテゴリーのスラッグ term_group // (整数) カテゴリーのグループ term_taxonomy_id // (整数) カテゴリーのタクソノミー ID taxonomy // (文字列) タクソノミー名 'category' description // (文字列) カテゴリーの説明 parent // (整数) 親カテゴリーの ID count // (整数) カテゴリーに登録されている投稿の数 object_id // (整数) オブジェクト ID cat_ID // (整数) カテゴリー ID (term_id にも同じ値が入る) category_count // (整数) カテゴリーに登録されている投稿の数(count にも同じ値が入る) category_description // (文字列) カテゴリーの説明(description にも同じ値が入る) cat_name // (文字列) カテゴリー名(name にも同じ値が入る) category_nicename // (文字列) カテゴリースラッグ名 - カテゴリー名から生成されたスラッグ(slug にも同じ値が入る) category_parent // (整数) 親カテゴリーの ID - 親がなければ 0 が入る(parent にも同じ値が入る) |
テンプレートタグ/get_the_category()の解説はこちら
余談
カテゴリーの一覧において、親カテゴリーの一覧を表示する際に、親カテゴリーの情報の取得に、難儀したことがあり、下記にその時の解決策を記載します。
1 2 3 4 5 6 7 8 9 10 |
<?php $cate = get_queried_object(); $cate_id = $cate -> cat_ID; $cate_name = $cate -> name; $cate_slug = $cate -> slug; if($cate_slug == '親カテゴリーのスラッグ'){ //親カテゴリーの場合の処理 } ?> |
よくif ($category[0]->parent){}という方法で、親カテゴリーの場合の対応する記事を拝見しましたが、ちょっと思ってた処理ができず、行き詰まっていたのですが、get_queried_object()という関数があると知り、試したところうまくいきました。
get_queried_object() は、カテゴリーページのみだけではなく、固定ページや単一投稿ページでも使用できるので、他にも使い方があるようですが、とりあえずは、親カテゴリーでの表示する際に有効でした。