@Denis9999

Вернуть в виде массива иерархическую таксономию?

get_terms( array('taxonomy' => 'champ', 'hide_empty' => true)) возвращает набор всех элементов таксономии в одной куче, даже если она иерархическая.

Array
(
    [5] => WP_Term Object
        (
            [term_id] => 9
            [name] => Премьер-лига
            [slug] => %d0%bf%d1%80%d0%b5%d0%bc%d1%8c%d0%b5%d1%80-%d0%bb%d0%b8%d0%b3%d0%b0-%d1%80%d0%be%d1%81%d1%81%d0%b8%d1%8f
            [term_group] => 0
            [term_taxonomy_id] => 9
            [taxonomy] => champ
            [description] => 
            [parent] => 2
            [count] => 1
            [filter] => raw
        )

    [6] => WP_Term Object
        (
            [term_id] => 2
            [name] => Россия
            [slug] => %d1%80%d0%be%d1%81%d1%81%d0%b8%d1%8f
            [term_group] => 0
            [term_taxonomy_id] => 2
            [taxonomy] => champ
            [description] => 
            [parent] => 0
            [count] => 1
            [filter] => raw
        )

    [9] => WP_Term Object
        (
            [term_id] => 10
            [name] => ЦСКА
            [slug] => %d1%86%d1%81%d0%ba%d0%b0
            [term_group] => 0
            [term_taxonomy_id] => 10
            [taxonomy] => champ
            [description] => 
            [parent] => 9
            [count] => 1
            [filter] => raw
        )

)


Можно ли вернуть элементы иерархической таксономии в виде ассоциативного массива в котором потомок находился бы в родителе?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
HectorPrima
@HectorPrima
программист
function get_taxonomy_hierarchy( $taxonomy, $parent = 0 ) {
	$taxonomy = is_array( $taxonomy ) ? array_shift( $taxonomy ) : $taxonomy;
	$terms = get_terms( $taxonomy, array( 'parent' => $parent, 'hide_empty' => false ) );
	$children = array();
	foreach ( $terms as $term ){
		$term->children = get_taxonomy_hierarchy( $taxonomy, $term->term_id );
		$children[ $term->term_id ] = $term;
	}
	return $children;
}

print_r(get_taxonomy_hierarchy('champ',0));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы