先日、ターム一覧を取得する関数get_terms()の使い方【WordPress】で、タームの一覧を取得するget_terms()関数の解説をしましたが、今回は記事(投稿)に属する(紐づいた)タームを取得する事が出来るget_the_terms()関数について詳しく解説していきます。
※本記事ではWordpress6.8.2使用しています。ご利用の環境により仕様が異なる場合があります。
get_the_terms()関数について
get_the_terms()関数は記事(投稿)に属するタームを取得する事が出来る関数となります。
get_terms関数()と違って使用する機会はそこまで多くはありませんが、記事ページ等で設定されているタームを表示する際などに使用されるのが多いかと思います。
ターム一覧を取得するget_terms()関数についてはターム一覧を取得する関数get_terms()の使い方【WordPress】をご覧ください。
get_the_terms()関数の使い方
get_the_terms()関数の使い方は以下のようになります。
<?php $terms = get_the_terms($post_ID, $taxonomy); ?>「$post_ID」には記事(投稿)のIDを指定し、「$taxonomy」にはタームを取得したいタクソノミースラッグを指定します。また、「$terms」は配列で取得したタームの情報を格納している変数となります。
記事(投稿)IDの指定
記事(投稿)IDは記事詳細ページや他テーマファイルのループ内で、「$post->ID」や「get_the_ID()」を使用すると取得可能です。
<?php $terms = get_the_terms($post->ID, $taxonomy); ?>タクソノミーの指定
以下は、get_the_terms()関数へのタクソノミーの指定例となります。
<?php $terms = get_the_terms($post->ID, 'category'); ?>タクソノミーの複数指定は配列にすると出来るのですが、私の環境ではwp-includesディレクトリ内の複数ファイルにて警告(Array to string conversion)が出てしまいました。警告の内容としては、配列を文字列として扱おうとした際にでる内容です。Wordpressのバグなのか私の環境が原因なのか不明だったため、今回複数タクソノミー指定については解説いたしません。
get_the_terms()関数の戻り値
get_the_terms()関数の戻り値は、以下の内容がタームの数だけ配列で返ってきます。
| プロパティ名 | 内容 |
|---|---|
| term_id | int型 タームのID |
| name | string型 タームの名前 |
| slug | string型 タームのスラッグ |
| term_group | int型 タームのグループID |
| term_taxonomy_id | int型 タクソノミーのID |
| taxonomy | string型 タクソノミーのスラッグ |
| description | string型 タクソノミーの説明 |
| parent | int型 親タームID、親タームが無い場合は「0」 |
| count | int型 タームに属する記事数 |
| filter | string型 WP_termの内部プロパティでタームオブジェクトの値をどのようにフィルタリングするかを示す(「raw」は生データ(加工なし)) |
この戻り値を出力するには以下のような形で記述すると出力出来ます。
<?php
$terms = get_the_terms($post->ID, 'category');
foreach($terms as $term){
echo $term->term_id; // タームのID
echo $term->name; // タームの名前
echo $term->slug; // タームのスラッグ
}
?>get_the_terms()関数で取得した内容は配列となっていますので、上記のようにforeachなどで配列ごとにループさせて出力する必要があります。
さいごに
いかがでしたでしょうか。
今回は、記事(投稿)に属するタームを取得するget_the_terms()関数の使い方を解説しました。
get_terms()関数と今回のget_the_terms()関数は用途が違うものとなりますので、間違わないようにしてください。