WordPress 投稿に紐づくタームの一覧を親タームと子タームに分けて取得する方法

WordPress 投稿に紐づくタームの一覧を親タームと子タームに分けて取得する方法

WordPress で投稿に紐づくタームの一覧を親タームと子タームに分けて取得する方法を紹介します。

WordPress 投稿に紐づくタームの一覧を親タームと子タームに分けて取得する方法

次のコードはタクソノミースラッグが taxonomy-slug の場合に、投稿に紐づくターム一覧を親・子と分けて表示する方法です。

<?php
// 投稿の ID を取得
$post_id = get_the_ID();
// 投稿に紐づくタームの一覧を取得
$terms = get_the_terms($post_id, 'taxonomy-slug');
// 各タームの親タームの ID を取得
$parent_ids = [];
foreach ($terms as $term) {
$parent_ids[] = $term->parent;
}
// 親タームと子タームを分けて出力
echo '<h2>親ターム</h2>';
foreach ($terms as $term) {
if ($term->parent == 0) {
echo $term->name . '<br>';
}
}
echo '<h2>子ターム</h2>';
foreach ($terms as $term) {
if ($term->parent != 0) {
echo $term->name . '<br>';
}
}
?>

表示中の投稿の ID を get_the_ID() で取得します。
次に get_the_terms() 関数を使用して、投稿に紐づくタームの一覧を取得します。
続いて term_parent() 関数を使用して、各タームの親タームの ID を取得します。
if文を使用して、各タームの親タームの ID が 0 かどうかを判定。
親タームの ID が 0 の場合は、そのタームを親タームとして処理して表示。
親タームの ID が 0 以外の場合は、そのタームを子タームとして処理して表示します。

まとめ

WordPress で投稿に紐づくタームの一覧を親タームと子タームに分けて取得する方法を紹介しました。