条件にマッチしたタームオブジェクトの配列を取得します。タームの一覧を表示したいときなどに使うことができます。
get_terms($args,$deprecated);| 引数 | 必須/任意 | 引数に指定するもの |
|---|---|---|
| 第1引数 $args | 任意 | 取得するタームの条件(パラメーター)を配列で指定(文字列での指定も可能ですが配列で理解しておく方が柔軟性がありオススメです)。初期値: [](空の配列)利用できる主なパラメーターは下記の通り。 taxonomy タクソノミー名を文字列か配列で指定orderby 返す値の順番を何順にするか指定、nameやcountなど。省略時はnameorder ASC/DESCを指定。ASCは昇順、DESCが降順。省略時はASChide_empty 真偽値を指定。trueなら記事件数が0のタームを除外。省略時はtrueinclude 取得するタームのIDを配列で指定。省略時は空の配列(指定なし)exclude 取得しないタームのIDを配列で指定。省略時は空の配列(指定なし)exclude_tree 子タームを含めて取得しないタームのIDを配列で指定number 取得件数の上限。省略時は全件name 取得したいタームの名前あるいはその配列slug 取得したいタームのスラッグあるいはその配列meta_query メタクエリの指定(カスタムフィールドを条件に取得)すべてのパラメーターは下記公式に記載があります。(英語) https://developer.wordpress.org/reference/classes/wp_term_query/__construct/ |
| 第2引数 $deprecated | 任意 | 第1引数を文字列で指定した場合、第1引数はタクソノミーの指定として認識され、第2引数で他のパラメーターを配列で指定できる。 ※第1引数を配列で指定することを前提に原則利用しない理解で問題ありません。 初期値: ''(空のテキスト) |
プラグインでカスタマイズしている場合は、プラグインが優先される可能性があります。例えば、orderbyやorderの値が反映されない場合は、ターム並び替えのプラグインが効いている可能性を疑ってみてください。
戻り値(返す値):条件にマッチしたタームオブジェクトの配列
取得したタームオブジェクトを配列として返します。foreachでループを回して配列から1つ1つ要素(タームのオブジェクト)を取り出してタームの名前を取得したりすることができます。
このオブジェクトが持つ主なプロパティ(中身)は以下の通りです。
term_id タームのIDname タームの名前slug タームのスラッグtaxonomy 所属するタクソノミーの名前description タームの説明文(管理画面からタームを追加する際の「説明」欄)count タームに所属する記事数
下記例では、まずタクソノミー「example-taxonomy」に所属するタームからID10と12のタームを除外し、さらにいくつか条件を加えた上でタームの一覧を取得しています。そして取得したターム一覧をforeachで回し、各タームオブジェクトからタームの名前を取得・表示してタームIDと名前の一覧表示を作成します。
<?php
$args = [
'taxonomy' => 'example-category', // 複数の場合は配列指定可
'exclude' => [10, 12], // ID10と12のタームを除外
'orderby' => 'count', // 表示する際の順番をcount(記事数)を基準にする
'order' => 'DESC', // 表示順を降順(この場合、記事件数が多い順)にする
'hide_empty' => false, // 記事件数が0のタームも含める
];
$terms = get_terms($args);
foreach ($terms as $term) { // 配列から1つ1つ要素(タームオブジェクト)を取り出して処理
echo $term->term_id; // タームのIDを取得して表示
echo $term->name; // タームの名前を取得して表示
}
?>【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。
【引数について】
【オブジェクトとは?】
オブジェクトとはデータの集合体です。例えば1つの記事には、記事の公開日、タイトル、本文など様々なデータがあります。それらを1つのデータにまとめたものがオブジェクトです。WordPressに関わらず、オブジェクトはプログラミングで一般的に使われるデータの集合体を示す言葉です。
【戻り値とは?】
テンプレートタグ(=関数)を実行した結果、返ってくる値のことを戻り値といいます。戻り値を変数に格納してその後の処理に使ったりします。また、テンプレートタグによって、真偽値、オブジェクト、整数など、戻り値の型は様々です。
※戻り値はechoしない限り画面には表示されません。あくまでもプログラミング上で値として返ってくるだけです。戻り値ではなく、値を画面に表示するテンプレートタグもあります。(例:the_title は画面に記事のタイトルを表示するテンプレートタグ)
ニュースやブログページのサイドバーに任意のタクソノミーに所属するターム一覧を表示したい場合などで使われます。具体的なコードは下記「参考コード」を参考にしてください。
下記例では、指定したタクソノミーに紐づくタームの一覧をリンク付きで表示します。
取得した配列(タームオブジェクトの配列)からループ処理でタームオブジェクトを取り出し、そのオブジェクトから必要情報を取得してHTMLに埋め込んでいます。
下記コードにあるget_term_link()はタームオブジェクトを引数にとり、タームのリンク(タームに紐づく記事の一覧を表示するためのリンク)を返します。
<?php
$args = [
'taxonomy' => 'example-category',
'orderby' => 'count',
'order' => 'DESC',
];
$terms = get_terms($args);
if (!empty($terms) && !is_wp_error($terms)) { // 空の配列あるいはエラーではないか
echo '<ul>';
foreach ($terms as $term) {
echo '<li>';
echo '<a href="' . get_term_link($term) . '">';
echo $term->name;
echo '</a> (' . $term->count . ')';
echo '</li>';
}
echo '</ul>';
}
?>結果例:下記のようにターム一覧を記事数付きで表示します(実際にはリンクが付きます)。
カテゴリーA(11)
カテゴリーB(5)
カテゴリーC(3)
カテゴリーD(1)
※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。