Obtener una lista HTML de todas las categorías en WordPress

Como todos sabréis si usáis WordPress, toda la información que el sistema maneja: las entradas, las páginas, o cualquier otro tipo de dato que hayáis creado (los llamados Custom Post Type), se estructura en base una taxonomía.
Las taxonomías por defecto son dos, que aunque internamente se implementan igual, externamente funcionan de forma diferente. Las categorías actúan comos los capítulos de un libro, como la tabla de contenido inicial, partiendo el contenido del blog en temáticas y las etiquetas actúan como el índice final donde se referencias temáticas de forma cruzada, el llamado índice de palabras (que dan lugar a nubes de etiquetas similares a las que os muestro a continuación).
Si manejáis otro tipo de datos, podéis crear vuestras propias taxonomías y así personalizar al máximo esta potencialidad para conseguir que WordPress sea una auténtica plataforma para desarrollar aplicaciones web.
Por cualquier razón, podéis queréis tener una lista de tipo <select><option> en HTML de las categorías, podéis usar las siguientes funciones que he creado y que uso para esto mismo:
function get_list_categories(){ return get_list_subcategories(0); } function get_list_subcategories($parent){ $result = ""; $args = array( 'taxonomy' => "category", 'parent' => $parent, 'hide_empty' => 0 ); $categories = get_categories($args); foreach($categories as $category) $result .= '<option value="'.$category->cat_ID.'">' . $category->cat_name . '</option>'; return $result; }
Si tenéis dudas preguntadme pero básicamente hay dos llamadas:
- get_list_categories(): para llamar a todas las subcategorías de padre 0, es decir, las categorías padre que no tienen hijas.
- get_list_subcategories($parent): indicando el ID del padre, obtenemos todas la categorías que son hijas inmediatas del padre definido en $parent.
Internamente básicamente tiene funcionalidad la segunda función y hace una llamada a la función de la API get_categories pasándole los argumentos para conseguir que nos devuelva de la taxonomía estándar, “category”, todas las categorías (sin esconder las que están vacías) cuyo padre inmediato es $parent.
Posteriormente se obtiene una colección de objetos de categorías al que le extraemos la cat_ID y la cat_name para usarlos en la representación de la colección.