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
-
取得するタクソノミー名(例:
category
、post_tag
、カスタムタクソノミー名)。
戻り値
- 配列
-
- 指定したタクソノミーのタームオブジェクトの配列を返します。
- 例外: 何もタームが見つからない場合、
false
を返します。
オプション
get_the_terms()
自体にはオプションはありませんが、タームオブジェクトには以下のようなプロパティがあります。
- タームオブジェクトの主なプロパティ
-
term_id
: タームのIDname
: タームの名前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()
は、投稿に紐づくカテゴリーやタグなどのターム情報を取得するために使うテンプレートタグです。カテゴリーやタグだけでなく、カスタムタクソノミーにも対応しており、メタ情報やリンクの生成など幅広い用途で使用されます。