MENU

get_terms()– Function –

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_emptytrueにすることで、投稿が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_emptyfalseに設定することで、投稿数がゼロでも用語を表示できます。

メタデータが取得できない

用語にメタデータが未設定の場合や、meta_queryの条件が正しくない場合。

解決策

get_term_meta()を使用して、対象用語にメタデータが設定されているか確認します。

Q&A

get_terms()でカスタムタクソノミーを取得できますか?

はい、taxonomy引数にカスタムタクソノミーの名前を指定することで取得可能です。

get_terms()で複数タクソノミーを同時に取得できますか?

はい、taxonomy引数に配列でタクソノミー名を渡すことで、複数タクソノミーの用語を同時に取得できます。

用語の階層構造はどのように取得しますか?

parent引数で特定の親用語IDを指定するか、child_of引数を使うことで、階層構造の用語を取得できます。

まとめ

get_terms()は、指定したタクソノミーの用語一覧を取得するための便利な関数です。

カテゴリーやタグ、カスタムタクソノミーの用語を取得し、様々な条件で絞り込むことができます。get_the_terms()get_term_meta()などの関連関数と組み合わせることで、さらに柔軟な情報取得が可能です。

カスタマイズ例

1