Заказать иерархию пользовательских таксономий - PullRequest
0 голосов
/ 15 октября 2019

У меня есть некоторая пользовательская таксономия для регионов.

Обычно это будет выглядеть примерно так.

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

однако, будут случаи, когда она будет выглядеть как

USA
- Arizona

или

UK
- Wales

и, может быть, даже просто

Japan

В моем цикле for я получаю данные таксономии как $location = get_the_terms( $id, 'listings_region' );

, а затем вHTML / PHP я могу просто написать $location[0]->name, а затем я получаю имя первого объекта в массиве.

Однако я заметил, что таксономия возвращается не в правильной иерархии, а в алфавитном порядке.

Когда я echo '<pre>'; print_r($location); echo '</pre>', я получаю массив, и [0] будет Аризона, а [1] будет США.

Как получить массив таксономии в правильном порядке, чтобы в идеале [0] всегда был родителем, [1] - первым дочерним элементом и т. Д.?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Я в основном понимаю, что вы хотите отобразить все категории с соответствующими дочерними категориями. Вы можете сделать это с помощью следующего кода:

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

Не проверено самостоятельно, поэтому вам нужно распечатать его один раз, чтобы получить его, но нужно изменить подход, чтобы получить доступ к категории и ее дочернему элементу.

0 голосов
/ 15 октября 2019

Работай,

$location = wp_get_post_terms($id, 'listings_region', array('orderby'=> 'parent'));
...