MENU

get_the_terms()– Function –

get_the_terms()は、指定した投稿に関連付けられているタクソノミー(カテゴリーやタグなど)のタームを取得するテンプレートタグです。タクソノミー関連のデータを操作する際に便利です。

目次

機能の説明

get_the_terms()は、投稿やカスタム投稿タイプに紐づいている特定のタクソノミーのタームを配列として取得します。たとえば、投稿に付与されたカテゴリーやタグ情報を取得するために使用されます。

シンプルなコード例

<?php
$terms = get_the_terms(get_the_ID(), 'category');
if ($terms && !is_wp_error($terms)) {
    foreach ($terms as $term) {
        echo $term->name . '<br>';
    }
}
?>

このコードは、現在の投稿に関連付けられているカテゴリー名を取得して表示します。get_the_terms()から返されるタームをループで処理しています。

使い方の解説

get_the_terms()は、特定の投稿IDとタクソノミーを指定することで、該当するタームの配列を返します。特にカテゴリー、タグ、カスタムタクソノミーの情報を取得する際に便利です。

引数

$post_id
  • 対象となる投稿のID。
  • 省略時: 現在の投稿IDが使用されます。
$taxonomy

取得するタクソノミー名(例:categorypost_tag、カスタムタクソノミー名)。

戻り値

配列
  • 指定したタクソノミーのタームオブジェクトの配列を返します。
  • 例外: 何もタームが見つからない場合、falseを返します。

オプション

get_the_terms()自体にはオプションはありませんが、タームオブジェクトには以下のようなプロパティがあります。

タームオブジェクトの主なプロパティ
  • term_id: タームのID
  • name: タームの名前
  • slug: URLフレンドリーなタームのスラッグ
  • taxonomy: タームが所属するタクソノミー名

使用例

<?php
$tags = get_the_terms(get_the_ID(), 'post_tag');
if ($tags && !is_wp_error($tags)) {
    echo 'タグ: ';
    foreach ($tags as $tag) {
        echo $tag->name . ' ';
    }
}
?>

この例では、現在の投稿に関連付けられているタグを取得して、各タグの名前をスペース区切りで表示しています。

一緒に使うことが多い関連タグ

get_the_category()

get_the_category()は、投稿のカテゴリー情報を取得するテンプレートタグです。

<?php
$categories = get_the_category();
if ($categories) {
    foreach ($categories as $category) {
        echo '<a href="' . get_category_link($category->term_id) . '">';
        echo $category->name;
        echo '</a><br>';
    }
}
?>

このコードは、投稿のカテゴリー名をリンク付きで表示します。get_category_link()を使うことでカテゴリーへのリンクを生成しています。

追加情報を取得したい場合

get_term_meta() でタームのメタ情報を取

<?php
$term_id = 123; // 取得したいタームのID
$meta_value = get_term_meta($term_id, 'custom_meta_key', true);
echo 'メタ情報: ' . esc_html($meta_value);
?>

get_term_meta()を使うことで、指定したタームに紐づいたカスタムメタ情報を取得できます。

出力できる情報

  • name: タームの名前
  • slug: タームのスラッグ
  • description: タームの説明
  • count: そのタームに紐づく投稿数

想定されるトラブル

タームが存在しない場合にfalseが返される

該当するタームが見つからない、または投稿にタームが付与されていない場合です。

解決策

if文でfalseかどうかをチェックし、エラー回避します。

カスタムタクソノミーが取得できない

タクソノミーが正しく登録されていない、または取得対象の投稿IDが間違っている可能性があります。

解決策

register_taxonomy()でタクソノミーが正しく登録されているか確認しましょう。

Q&A

get_the_terms()falseを返すのはなぜですか?

該当するタームが存在しない、または投稿にタームが付与されていない可能性があります。

タームのリンクを取得するにはどうすれば良いですか?

get_term_link()を使うことでタームのリンクを取得できます。

カスタムタクソノミーにも対応していますか?

はい、get_the_terms()はカスタムタクソノミーにも対応しています。

まとめ

get_the_terms()は、投稿に紐づくカテゴリーやタグなどのターム情報を取得するために使うテンプレートタグです。カテゴリーやタグだけでなく、カスタムタクソノミーにも対応しており、メタ情報やリンクの生成など幅広い用途で使用されます。

カスタマイズ例

1