WordPress

WordPress|get_the_category()を理解したい

この記事では、ずばり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関数のお話でした。

最近の記事

  1. CSS

    要素の配置が簡単に決まるFlexboxの使い方
  2. CSS

    擬似クラス「:first-child」「:last-child」はどうして効かな…
  3. CSS

    CSS|中央寄せが効かないときは・・・
  4. CSS

    レスポンシブウェブデザインの基本|メディアクリエリの設定
  5. WordPress

    WordPressの立ち上げからサイト構築までの初期手順
PAGE TOP