WordPressをカスタマイズするときに、カテゴリー情報を利用することがあるでしょう。カテゴリー関連のテンプレートタグは、たくさんの種類が存在します。いろいろな用途に利用できる反面、使い分けがしづらいと感じるかもしれません。この記事では、カテゴリー関連のテンプレートタグの中から、get_the_categoryについて解説します。また、get_the_categoryと間違いやすい他のテンプレートタグについてもご紹介するので、あわせて確認してください。
get_the_categoryとは
get_the_categoryとは、WordPressで使用するテンプレートタグです。カテゴリー情報を取得できます。ただし、デフォルトの「category」 分類に含まれていない情報は取得できません。カスタム分類の項目を取得する場合は、get_the_termsを使用してください。
テンプレートタグとは、WordPressが定義した関数です。よく利用される機能をあらかじめプログラムし、関数として使えるようにしてあります。テンプレートタグは、PHP言語で機能する関数です。<?php テンプレートタグ ?>と記述しましょう。テンプレートタグを記述する場所は、テーマのテンプレートファイル内です。「.php」識別子のファイルからお目当てのファイルを探しましょう。
PHPと他の言語
WordPressをカスタマイズするなら、いくつかのプログラミングに関係する言語を覚える必要があります。PHPは、動的なWebページを作ることができるプログラミング言語です。動的なWebページでは、条件によって表示を変えたりできます。新着ニュースなどは動的なWebページでないとできません。
PHPのほかに、JavaScriptも動的なWebページを作るために使用します。2つの違いは、サーバーで動くかブラウザで動くかです。WordPressはホームページの元となる情報をサーバーに保管しています。この情報にアクセスしてそれぞれのページをかたちづくるために利用するものがPHPです。WordPressにとってPHPは基本のプログラミング言語になるでしょう。
動的なWebページはPHPを利用しますが、静的なWebページを作る際はHTMLを利用します。記事の本文を入力し、文字の色などを変えることができます。他に、CSSというデザインやレイアウトに関係するものもあります。
get_the_categoryの基本

get_the_categoryは、投稿のカテゴリー情報詳細を配列の形で取得します。投稿IDを指定しなければ、現在の投稿の情報を表示するでしょう。投稿IDを指定して、特定の投稿の情報を取得することもできます。投稿IDを指定しない場合、ループの中でのみ使用してください。投稿IDを指定すれば、ループ外でも使用可能です。テンプレートタグは使用をループ内に限定されているものがあります。新しいテンプレートタグを使うときは、WordPress公式オンラインマニュアルの説明を読んでから使用してください。また、get_the_categoryではカスタム分類には使用できません。その場合は、get_the_termsを使用してください。
使用方法
<?php ?>の間に、下記のコードを記述してください。現在の投稿のカテゴリー情報を取得できます。()内に特定の投稿IDを指定すると、その投稿IDのカテゴリー情報を取得できます。
ループ内 | get_the_category(); |
ループ内外 | get_the_category(投稿ID); |
取得できるデータ
get_the_categoryから取得できるデータの一覧です。配列で返されます。その投稿にカテゴリーが複数ある場合もすべて取得できます。
項目 | データ型 | 意味 |
term_id | 整数 | カテゴリーID |
name | 文字列 | カテゴリー名 |
slug | 文字列 | カテゴリースラッグ |
term_group | 整数 | カテゴリーグループ |
term_taxonomy_id | 整数 | カテゴリータクソノミーID |
taxonomy | 文字列 | タクソノミー名 =’category’ |
description | 文字列 | カテゴリーの説明 |
parent | 整数 | 親カテゴリーの ID |
count | 整数 | カテゴリーに登録された投稿の数 |
object_id | 整数 | オブジェクトID |
cat_ID | 整数 | term_id と同じ |
category_count | 整数 | count と同じ |
category_description | 文字列 | description と同じ |
cat_name | 文字列 | name と同じ |
category_nicename | 文字列 | slug と同じ |
category_parent | 整数 | parent と同じ |
・parentとcategory_parentは、親カテゴリーがない場合、0が入ります。
・slug(スラッグ)は、カテゴリー名をURL用に半角小文字の英数字とハイフンのみで表現したものです。
<例>カテゴリー名:写真 スラッグ:photo
・taxonomy(タクソノミー)は、分類という意味です。get_the_categoryで取得するデータの分類はすべてカテゴリーなので、’category’が入ります。
get_the_categoryができること

get_the_categoryが取得するデータを確認したら、この情報を使ってどんなことができるのかを考えてみましょう。get_the_categoryは同じ情報が重なって出力されるので、不要なデータは省きます。主に使うデータは、カテゴリーIDやカテゴリー名になるでしょう。カテゴリー分けをする際、1つの記事に1つのカテゴリーのみとする場合と、複数のカテゴリーをもたせる場合があるかもしれません。複数のカテゴリーをもつ場合ともたない場合では条件分岐を変える必要があるので注意してください。
親カテゴリーのみを取得する
カテゴリーが複数階層にわたる場合、親カテゴリーと子カテゴリーの情報がすべて取得されます。このうち、親のみ、子のみを取得したい場合もあるでしょう。取得できるデータの中に「parent」という、親のIDを示す項目があります。ここに「0」が入っている場合は、親がないと判断できるでしょう。親のみ、子のみと条件を分岐させることで、カスタマイズの幅が広がります。
カテゴリーIDを使って、カテゴリーごとに画像を変える
get_the_categoryは、投稿が所属しているカテゴリーのカテゴリーIDを取得できます。このカテゴリーIDを使うとさまざまなカスタマイズができるでしょう。たとえば、カテゴリーIDを使ってカテゴリーごとに違う画像を呼び出すことができます。旅行のカテゴリーに風景画像、動物のカテゴリーに犬の画像などを割り当てることができるでしょう。あらかじめ画像の名前をカテゴリーIDにしておけば、それぞれの画像を呼び出すのも簡単です。
カテゴリー名とカテゴリーIDからリンクを作る
get_the_categoryはリンクを取得できません。しかし、リンクを表示したい場合もあるでしょう。そのようなときは、カテゴリーIDをキーにget_category_linkを使ってリンクを取得する方法があります。まず、get_the_categoryでカテゴリーIDとカテゴリー名を取得してください。次に、取得したカテゴリーIDをキーにget_category_linkで対象のカテゴリーへのリンクを取得します。表示するテキストに、カテゴリー名を指定してリンクを貼ればカテゴリーへのリンクを作ることができるでしょう。
カテゴリー関係のテンプレートタグ

get_the_categoryを使ったカスタマイズの方法をいくつかご紹介しました。WordPressには他にもカテゴリー関連のテンプレートタグが用意されています。その中でも、get_the_categoryに関係するテンプレートタグを4つ紹介します。テンプレートタグを使用するときは、ループの中で使用するかどうかを必ず確認してください。
get_the_terms
get_the_termsはget_the_categoryと同じように、カテゴリー情報を取得できるテンプレートタグです。get_the_termsはループの内外どちらでも使えます。get_the_termsを使用するなら、投稿IDとタクソノミーを必ず指定してください。
get_the_terms(投稿id,タクソノミー);
タクソノミー(分類)とは、サイトを分類する仕組みです。デフォルトのタクソノミーは、カテゴリーとタグだけです。その他にオリジナルの分類をカスタムタクソノミーとして追加できます(カスタム分類)
get_the_termsのタクソノミーに’category’を指定すれば、get_the_categoryと似たことができるでしょう。タクソノミーにカスタムタクソノミーの名前を指定すれば、そのカスタムタクソノミーの項目を取得できます。get_the_termsと、get_the_categoryは親子のような関係です。
get_category
get_categoryは、カテゴリーIDかカテゴリーオブジェクトを指定すれば、カテゴリー情報を取得できます。この引数は必ず指定してください。他の2つの引数は省略できます。get_categoryは、ループ外でも使用可能です。
get_category(カテゴリーID, 出力するデータ型,フィルター);
引数の意味
カテゴリーID | カテゴリーIDかカテゴリーオブジェクトを必ず指定 |
出力するデータ型 | 「指定なし」オブジェクト 「ARRAY_A」連想配列 「ARRAY_N」インデックス配列 |
フィルター | 指定しなければ、フィルターの適用なし |
get_the_categoryは投稿IDから、get_categoryはカテゴリーIDからカテゴリー情報を取得するテンプレートタグです。用途によって使い分けましょう。
the_category
the_categoryは、投稿が分類されているカテゴリー名をリンクと共に取得できます。the_categoryは必ずループの中で使用してください。3つの引数は指定しなくてもかまいません。投稿IDを指定しなければ、現在の投稿からカテゴリーを表示します。
the_category( 区切り文字,親カテゴリーの表示方法,投稿ID );
引数の意味
区切り文字 | 複数のカテゴリーが存在する場合の表示方法を指定 指定なしは箇条書き |
親カテゴリーの表示方法 | 親カテゴリーの表示有無と表示方法 「指定なし」子カテゴリーへのリンクのみ 「’multiple’」親・子カテゴリーへのリンクをそれぞれ表示 「’single’」子カテゴリーだけにリンク表示 |
投稿ID | 指定しなければ、現在の投稿 |
現在見ている投稿が所属するカテゴリーへのリンクを作ることができます。そこから、他の関連記事へ誘導できるかもしれません。
get_category_link
get_category_linkとは、指定したカテゴリーIDへのリンクをPHPの値として取得できます。カテゴリーIDの指定は必須です。ループ外でも使用可能なため、the_categoryと使い分けしましょう。
get_category_link(カテゴリーID);
get_category_link単体で使用することはあまりありません。カテゴリーIDやカテゴリー名を取得できる、get_the_categoryなどのテンプレートタグと組み合わせて使用してください。
サイトをカスタマイズしよう
カテゴリー情報を利用する方法について、いくつか解説しました。WordPressはホームページを簡単に作成できる便利なツールです。ただ、こだわりのある便利なサイトを作りたいならカスタマイズに挑戦してみましょう。WordPressはカスタマイズにも柔軟に対応できるよう、さまざまな機能が用意されています。テンプレートタグもそのひとつです。カテゴリー関連以外にも便利なテンプレートタグがあるので探してみるとよいでしょう。いろいろな機能を使って、自分だけの素敵なサイトをカスタマイズしてください。