get_terms()は、特定のタクソノミーの用語(カテゴリー、タグ、カスタムタクソノミー)を取得するためのWordPress関数です。複数条件に基づく絞り込みも可能で、一覧表示などに使用されます。
機能の説明
get_terms()は、指定したタクソノミー(分類)に基づいて、カテゴリー、タグ、またはカスタムタクソノミーの用語を取得します。取得条件を指定できるため、投稿数で絞り込んだり、特定の用語だけを取得するなどの柔軟な処理が可能です。
シンプルなコード例
<?php
$terms = get_terms('category');
if (!empty($terms)) {
foreach ($terms as $term) {
echo $term->name . '<br>';
}
}
?>このコードは、カテゴリー(categoryタクソノミー)の全用語を取得し、各用語の名称を表示します。get_terms()で取得した用語データを、$term->nameで出力しています。
使い方の解説
get_terms()はタクソノミーの用語を取得する際に非常に便利です。例えば、特定のカテゴリーやタグを一覧表示したい場合や、カスタムタクソノミーの一覧を表示したいときに使用します。取得条件を指定することで、例えば投稿数が多い順にソートする、または親用語のみ取得する、といった細かい設定も可能です。
引数
'taxonomy'-
- 説明: 取得するタクソノミー名を指定(例:
'category','post_tag') - 型: 文字列または配列
- 説明: 取得するタクソノミー名を指定(例:
'orderby'-
- 説明: 用語の並び順の指定(例:
'name','count','slug') - 型: 文字列
- 説明: 用語の並び順の指定(例:
'order'-
- 説明: 昇順または降順を指定(
'ASC'または'DESC') - 型: 文字列
- 説明: 昇順または降順を指定(
'hide_empty'-
- 説明: 投稿がない用語を除外するかどうか(
trueで非表示、falseで表示) - 型: 真偽値
- 説明: 投稿がない用語を除外するかどうか(
'number'-
- 説明: 取得する用語の最大数を指定
- 型: 整数
'parent'-
- 説明: 特定の親IDに属する用語を取得する
- 型: 整数
'meta_query'-
- 説明: メタデータ条件を指定するための配列
- 型: 配列
戻り値
WP_Term[]またはWP_Error-
用語が存在する場合は
WP_Termオブジェクトの配列を返し、エラーが発生した場合はWP_Errorオブジェクトを返します。
オプション
'pad_counts'-
- 説明: 階層構造のタクソノミーにおいて、子用語の投稿数を親用語に加算するかどうか
- 型: 真偽値
'fields'-
- 説明: 返すデータのフィールドを指定(例:
'all','ids','names') - 型: 文字列
- 説明: 返すデータのフィールドを指定(例:
'child_of'-
- 説明: 特定の親用語IDの子用語を取得する
- 型: 整数
使用例
<?php
$args = array(
'taxonomy' => 'post_tag',
'orderby' => 'count',
'order' => 'DESC',
'hide_empty' => true,
'number' => 5,
);
$tags = get_terms($args);
if (!is_wp_error($tags) && !empty($tags)) {
foreach ($tags as $tag) {
echo $tag->name . ' (' . $tag->count . ' posts)<br>';
}
}
?>このコードは、投稿数が多い順に上位5つのタグ(post_tag)を取得し、タグ名とその投稿数を表示する例です。hide_emptyをtrueにすることで、投稿が1つもないタグは表示しません。
一緒に使うことが多い関連タグ
get_the_terms()
get_the_terms()は、指定した投稿に関連するタクソノミーの用語を取得します。個別投稿のタクソノミー情報を表示したい場合に使用します。
使用例
<?php
$post_tags = get_the_terms(get_the_ID(), 'post_tag');
if ($post_tags && !is_wp_error($post_tags)) {
foreach ($post_tags as $tag) {
echo $tag->name . '<br>';
}
}
?>このコードは、現在の投稿に紐づくタグ(post_tag)を取得し、各タグ名を表示します。get_the_terms()は、個別投稿に関連する用語を取得するために使用します。
wp_list_categories()
wp_list_categories()は、カテゴリーリストを表示するためのテンプレートタグです。カテゴリー一覧を表示したい場合に使用されます。
<?php
wp_list_categories(array(
'orderby' => 'name',
'show_count' => true,
'title_li' => '',
));
?>このコードは、カテゴリー一覧をアルファベット順で表示する例です。show_countオプションで投稿数を表示し、title_liを空にすることで、リストにタイトルを表示しません。
追加情報を取得したい場合
get_terms()で取得した用語データは、各種テンプレートタグや関数と組み合わせることでさらに活用できます。
get_term_meta()で取得できるメタ情報
get_term_meta()は、タクソノミーの用語に付随するメタデータを取得します。
<?php
$terms = get_terms(array('taxonomy' => 'genre', 'number' => 3));
foreach ($terms as $term) {
$color = get_term_meta($term->term_id, 'color', true);
echo $term->name . ' - カラー: ' . $color . '<br>';
}
?>このコードは、genreタクソノミーから上位3つの用語を取得し、それぞれのcolorメタデータを取得して表示します。
出力できる情報
- meta_key: 用語に関連するメタデータのキー名
- meta_value: 用語に関連するメタデータの値
想定されるトラブル
投稿数がゼロの用語が表示されない
hide_empty引数がtrueに設定されている場合、投稿数がゼロの用語が非表示になります。
解決策
hide_emptyをfalseに設定することで、投稿数がゼロでも用語を表示できます。
メタデータが取得できない
用語にメタデータが未設定の場合や、meta_queryの条件が正しくない場合。
解決策
get_term_meta()を使用して、対象用語にメタデータが設定されているか確認します。
Q&A
まとめ
get_terms()は、指定したタクソノミーの用語一覧を取得するための便利な関数です。
カテゴリーやタグ、カスタムタクソノミーの用語を取得し、様々な条件で絞り込むことができます。get_the_terms()やget_term_meta()などの関連関数と組み合わせることで、さらに柔軟な情報取得が可能です。