Reproduciendo la salida de la lista jerárquica de wp_list_categories, usando get_categories ()

2

Necesito más control sobre la lista de resultados de la categoría, así que estoy usando get_categories (http://codex.wordpress.org/Function_Reference/get_categories), en lugar de wp_list_categories (http://codex.wordpress.org/Template_Tags / wp_list_categories).

Esta función devuelve una matriz plana de objetos ordenados por un determinado atributo. ¿Cómo puedo construir una lista jerárquica a partir de ella como lo hace wp_list_categories ()?

    
pregunta Alex 19.11.2010 - 23:53

2 respuestas

4

La solución más ideal para recorrer los datos es usar la clase de caminante de WordPress.

enlace

No encontrarás muchos ejemplos en la web para usarlos, pero Scribu nos dio uno aquí.

enlace

También puede consultar las clases que usa WordPress para extender el andador como ejemplos adicionales.

enlace

Espero que ayude ..

    
respondido por el t31os 20.11.2010 - 00:32
1

cómo construir un árbol jerárquico desde get_categories

ver: enlace

en esa respuesta Jan Fabry jan-fabry http://sstatic.net/wordpress/img/favicon. ico jan-fabry lo hace así:

$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]);
    
respondido por el edelwater 20.11.2010 - 13:01

Lea otras preguntas en las etiquetas