WordPressでサイトを作成していると、カスタム投稿タイプを使って最初からある「投稿」とは違う種類の投稿を作ることがあります。
たとえば、「お知らせ」とかとは別に「プレスリリース」を作ったりなどです。企業サイトなどであればよくあることです。カテゴリーで「お知らせ」と「プレスリリース」を作っても良いのですが、『管理画面上で分けて煩雑にならないようにしたい』などの要望もあります。
そのとき、カテゴリーも通常のものではなく、カスタムタクソノミーを使って独自のカテゴリーを作ったりします。そこで記事に設定したカスタムタクソノミーのターム情報を取得する方法をメモしておきます。
スポンサーリンクカスタムタクソノミーとタームについて
簡単にですが、タクソノミーとタームの意味に触れておきます。
WordPressはインストールした時点で「カテゴリー」や「タグ」がありますが、これもタクソノミーです。標準で付いている2つのタクソノミー以外にタクソノミーを作ったとき、それを「カスタムタクソノミー」と呼んでいるのです。
記事に設定したタームの情報を取得する方法
下記は「the_post()」をしている場合を想定しています。
$terms = get_the_terms(get_the_ID(), 'info_cat');
「get_the_terms」を使って記事に設定されたタームの情報を取得できます。引数には「投稿ID」と「作成したタクソノミーのスラッグ(上記の場合:info_cat)」を渡します。
ここでは投稿ID取得に「get_the_ID」を使っていますが、取得したい投稿がある場合は、その投稿IDを設定してください。
1つ目の情報を取得する場合
$terms = get_the_terms(get_the_ID(), 'info_cat'); $term = $terms[0];
取得したタームの情報は配列になっているので、上記のように「$terms[0]」で配列の1つ目を取り出せばOKです。
取得できる情報
/* 取得できる情報 array(1) { [0]=>object(WP_Term) (10) { ["term_id"]=>int(2) ["name"]=>string(12) "お知らせ" ["slug"]=>string(11) "information" ["term_group"]=>int(0) ["term_taxonomy_id"]=>int(2) ["taxonomy"]=>string(8) "info_cat" ["description"]=>string(0) "" ["parent"]=>int(0) ["count"]=>int(1) ["filter"]=>string(3) "raw" } }
いくつか抜粋すると、下記のような感じです。とりあえず、個人的にはこれで十分かなと思います。
キー | 内容 |
---|---|
term_id | タームのID |
name | タームの名称 |
slug | タームのスラッグ |
term_taxonomy_id | タクソノミーのID ※こちらもタームのIDが入っているような… |
taxonomy | タクソノミーのスラッグ |
アクセスする方法
$terms = get_the_terms(get_the_ID(), 'info_cat'); $term = $terms[0]; // アクセス方法 echo $term->name;
オブジェクトなので「->」を使ってアクセスできます。
カテゴリーの場合
$categories = get_the_category(get_the_ID()); $cat = $categories[0];
カテゴリーの場合は、上記のように「get_the_category」を使って記事に設定したカテゴリーの情報を取得できます。
カスタムタクソノミーでも「get_the_category」を使って取得しようとしてハマる場合があるのでご注意ください。
まとめ
「get_the_terms」を使って引数に「投稿ID」と「作成したタクソノミーのスラッグ(下記の場合:info_cat)」を指定すれば記事に設定したターム情報が取得できる。1つ目だけ欲しい場合は、「$terms[0]」でOK。
$terms = get_the_terms(get_the_ID(), 'info_cat'); $term = $terms[0];
スポンサーリンク
スポンサーリンク