Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // determine the topmost parent of a term
- function get_term_top_most_parent($term_id, $taxonomy){
- // start from the current term
- $parent = get_term_by( 'id', $term_id, $taxonomy);
- // climb up the hierarchy until we reach a term with parent = '0'
- while ($parent->parent != '0'){
- $term_id = $parent->parent;
- $parent = get_term_by( 'id', $term_id, $taxonomy);
- }
- return $parent;
- }
- // so once you have this function you can just loop over the results returned by wp_get_object_terms
- function hey_top_parents($taxonomy) {
- // get temrs for current post
- $terms = wp_get_object_terms( get_the_ID(), $taxonomy );
- // set vars
- $top_parent_terms = array();
- foreach ( $terms as $term ) {
- //get top level parent
- $top_parent = get_term_top_most_parent( $term->term_id, $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)
- $r = '<p>Parent terms:</p><ul>';
- foreach ( $top_parent_terms as $term ) {
- $r .= '<li><a href="' . get_term_link( $term->slug, $taxonomy ) . '">' . $term->name . '</a></li>';
- }
- $r .= '</ul>';
- // return the results
- return $r;
- }
Advertisement
Add Comment
Please, Sign In to add comment