この記事では、ずばりget_the_category()
を理解したい方のための情報を網羅しようと思っています。
コンテンツ
get_the_category()
とは?
get_the_category()
というのは記事が属しているあらゆるカテゴリ情報が取得できる関数です。「記事」と言っても記事は1つだけではないので、「どの記事??」という話になると思います。だから、基本的にループの中で使用します。
PHP
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> //ここがループの中です <?php endwhile; else : ?>
ループというのは、個別投稿ページ(single.php)やメインインデックス(index.php)などの中で使用されている記事の一覧や記事そのものを出力するためのコードです。実際の書き方はテーマによって微妙に違います。
実際にget_the_category()
を使ってカテゴリ情報を表示してみる
百聞は一見にしかずなので、実際に関数を使ってカテゴリ情報を出してみましょう。下記のコードを個別投稿ページ(single.php)のループの中にコピペしたあと、記事のソースコードを見てみて下さい。
<!-- get_the_category関数 <?php $cat = get_the_category(); //get_the_category関数を$catに代入(カテゴリ情報を取得) print_r($cat); //カテゴリ情報の出力 ?> -->
出力されるカテゴリ情報はコメントアウトしてありますので、ページの表側には影響ありませんので安心してください。ページのソースコードの中で「get_the_category関数」を検索するとカテゴリ情報が表示されます。
下記は実際にサンプルで表示させてみたカテゴリ情報です。
Array ( [0] => WP_Term Object ( [term_id] => 9 [name] => 子カテゴリ [slug] => child [term_group] => 0 [term_taxonomy_id] => 9 [taxonomy] => category [description] => [parent] => 10 [count] => 1 [filter] => raw [cat_ID] => 9 [category_count] => 1 [category_description] => [cat_name] => 子カテゴリ [category_nicename] => child [category_parent] => 10 ) [1] => WP_Term Object ( [term_id] => 10 [name] => 親カテゴリ [slug] => parent [term_group] => 0 [term_taxonomy_id] => 10 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw [cat_ID] => 10 [category_count] => 1 [category_description] => [cat_name] => 親カテゴリ [category_nicename] => parent [category_parent] => 0 ) )
上記は、カテゴリを2つ登録している記事でしたのでカテゴリ情報が2つになっています。カテゴリが複数ある場合、カテゴリ名(スラッグではなくて)の昇順(あいうえお順)で並びます。Arrayつまり、配列の中に[0], [1], [2],…という形でキーがあり、0から順番にそれぞれカテゴリ情報が入るというわけです。
表示されるフィールドと意味
下記がget_the_category関数によって出力されるフィールドとその意味です。意味が重複しているものも複数あります。
フィールド | 意味 |
---|---|
term_id | カテゴリID |
name | カテゴリ名 |
slug | カテゴリのスラッグ |
term_group | カテゴリのグループ |
term_taxonomy_id | カテゴリのタクソノミーID |
taxonomy | タクソノミ名 |
description | カテゴリの説明 |
parent | 親カテゴリのID |
count | 登録されている投稿数 |
filter | フィルタ名 |
cat_ID | カテゴリID |
category_count | 登録されている投稿数 |
category_description | カテゴリの説明 |
cat_name | カテゴリ名 |
category_nicename | カテゴリーのスラッグ |
category_parent | 親カテゴリのID |
カテゴリ情報の中から情報を取り出す方法
指定したキーのカテゴリ情報を取り出す
先ほど、サンプルで出力したカテゴリ情報では、登録されている2つのカテゴリが表示されていました。この2つの内の1つだけを取り出したい場合は、下記のようになります。
<!-- get_the_category関数 <?php $cat = get_the_category(); //カテゴリ情報を取得 print_r($cat[0]); //キーが[0]のカテゴリ情報を出力 ?> -->
先ほど、配列の中に[0], [1], [2],…という形でそれぞれのカテゴリ情報が入っているというお話をしましたが、そのうちの1つのカテゴリ情報が欲しい場合は、上記のように$cat[0]
という形で配列のキーを指定します。
WP_Term Object ( [term_id] => 9 [name] => 子カテゴリ [slug] => child [term_group] => 0 [term_taxonomy_id] => 9 [taxonomy] => category [description] => [parent] => 10 [count] => 1 [filter] => raw [cat_ID] => 9 [category_count] => 1 [category_description] => [cat_name] => 子カテゴリ [category_nicename] => child [category_parent] => 10 )
上記は、実際にキーを指定してカテゴリ情報を出力した例です。
指定したキーのカテゴリの中の特定の情報を取り出す
指定したカテゴリの中の特定のフィールドの値を取り出したいときは下記のようなコードを書きます。
$cats[番号]->フィールド名
真ん中にある->
は「アロー演算子」と言われていてフィールドにアクセスするための演算子です。
例えば、実際に$cats[0]->term_id
という形で情報を出力してみるとこうなります。
<?php $cat = get_the_category(); //カテゴリ情報を取得 print_r($cat[0]->term_id); //キーが[0]のカテゴリのterm_idを出力 ?>
結果
9
このようにフィールドを指定すると、その値だけが出力されます。
以上がget_the_category関数のお話でした。