質問: カスタム分類用語の最上位の親を取得する 特定の用語のトップレベルの親を取得する方法私はwp_get_object_termsを使用して投稿の分類用語を取得していますが、すべてのタグ付き用語を表示するのではなく、タグ付き用語の最上位の親のみを表示します。したがって、これらが私の選択した用語であれば、朝食、昼食、夕食だけを見せたいのです。x breakfast x cereal x eggs lunch hamburger x pizza dinner fish bass x salmon trout lasagna これどうやってするの?
回答: このコードを提供してくれたivayloに感謝します。これはbainternetの答えに基づいています。以下の最初の関数get_term_top_most_parentは、用語と分類法を受け入れて、その用語の最上位の親(または親がない場合は用語自体)を返します。 2番目の関数(get_top_parents)はループ内で機能し、分類法が与えられると、投稿の用語のトップレベルの親のhtmlリストを返します。// determine the top-most parent of a term function get_term_top_most_parent( $term, $taxonomy ) { // start from the current term $parent = get_term( $term, $taxonomy ); // climb up the hierarchy until we reach a term with parent = '0' while ( $parent->parent != '0' ) { $term_id = $parent->parent; $parent = get_term( $term_id, $taxonomy); } return $parent; } 上記の関数を入手したら、wp_get_object_termsによって返された結果をループして、各用語の上位の親を表示できます。function get_top_parents( $taxonomy ) { // get terms for current post $terms = wp_get_object_terms( get_the_id(), $taxonomy ); $top_parent_terms = array(); foreach ( $terms as $term ) { //get top level parent $top_parent = get_term_top_most_parent( $term, $taxonomy ); //check if you have it in your array to only add it once if ( !in_array( $top_parent, $top_parent_terms ) ) { $top_parent_terms[] = $top_parent; } } // build output (the html is up to you) $output = '<ul>'; foreach ( $top_parent_terms as $term ) { //add every term $output .= '<li><a href="'. get_term_link( $term ) . '">' . $term->name . '</a></li>'; } $output .= '</ul>'; return $output; }