Воспроизведение иерархического списка из wp_list_categories с использованием get_categories ()

Мне нужно больше контролировать вывод списка категорий, поэтому я использую get_categories (http://codex.wordpress.org/Function_Reference/get_categories) вместо wp_list_categories (http://codex.wordpress.org/Template_Tags/wp_list_categories) ,

Эта функция возвращает плоский массив объектов, упорядоченных определенным атрибутом. Как я могу построить из него иерархический список, например wp_list_categories ()?

Solutions Collecting From Web of "Воспроизведение иерархического списка из wp_list_categories с использованием get_categories ()"

Наиболее идеальным решением для ходьбы по данным является использование класса Walker WordPress.

http://codex.wordpress.org/Function_Reference/Walker_Class

Вы не найдете много примеров в Интернете для его использования, но здесь был дан Scribu.

http://scribu.net/wordpress/extending-the-category-walker.html

Вы также можете посмотреть классы, которые использует WordPress, чтобы расширить ходунки в качестве дополнительных примеров.

http://core.trac.wordpress.org/browser/tags/3.0.1/wp-includes/classes.php

Надеюсь, это поможет..

как построить иерархическое дерево из get_categories

см. https://stackoverflow.com/questions/3287603/wordpress-wp-list-categories-problem

в этом ответе Ян Фабри Ян Фабри jan-fabry http://sstatic.net/wordpress/img/favicon.ico jan-fabry делает это так:

$categories = get_categories(); // First index all categories by parent id, for easy lookup later $cats_by_parent = array(); foreach ($categories as $cat) { $parent_id = $cat->category_parent; if (!array_key_exists($parent_id, $cats_by_parent)) { $cats_by_parent[$parent_id] = array(); } $cats_by_parent[$parent_id][] = $cat; } // Then build a hierarchical tree $cat_tree = array(); function add_cats_to_bag(&$child_bag, &$children) { global $cats_by_parent; foreach ($children as $child_cat) { $child_id = $child_cat->cat_ID; if (array_key_exists($child_id, $cats_by_parent)) { $child_cat->children = array(); add_cats_to_bag($child_cat->children, $cats_by_parent[$child_id]); } $child_bag[$child_id] = $child_cat; } } add_cats_to_bag($cat_tree, $cats_by_parent[0]);