-1

I have some custom taxonomy for regions.

Commonly it would look something like this.

USA (parent)
- Arizona (child 1)
- - Phoenix (child 2)

however, there will be cases where it will only be like

USA
- Arizona

or

UK
- Wales

and maybe even just

Japan

In my for loop I get the taxonomy data as $location = get_the_terms( $id, 'listings_region' );

and then in the html/php I can simply write $location[0]->name and then I get the the name of the first object in the array.

I have however noticed that the taxonomy comes back not in the correct hierarchy - instead, alphabetically.

When I echo '<pre>'; print_r($location); echo '</pre>', I get the array and [0] would be Arizona and [1] would be USA.

How can I retrieve it the taxonomy array in the correct order so that ideally [0] is always the parent, [1] is the first child, etc?

Thanks in advance.

Ronald Langeveld
  • 694
  • 1
  • 8
  • 23

2 Answers2

0

Got it working,

$location = wp_get_post_terms($id, 'listings_region', array('orderby'=> 'parent'));
Ronald Langeveld
  • 694
  • 1
  • 8
  • 23
0

I basically understand that you want to display all the categories with corresponding child-categories. You can do this by following code:

$terms = get_the_terms($id, 'listings_region');
foreach($terms as $key => $term){
    if($term->parent != 0){
        $terms[$term->parent]->children[] = $term;
        unset($terms[$key]);
    }
}

Not tested own so you need to print it once to get it your way but, need to change approach to access the category and it's child.

Vantiya
  • 612
  • 1
  • 4
  • 11