Listar categorías 'child_of' por slug en lugar de ID

1 feb 2011, 13:48:17
Vistas: 19.4K
Votos: 4

Quiero listar categorías que pertenecen a una categoría padre. El problema es que usar IDs de categoría no es práctico y hace las cosas más difíciles de entender.

¿Existe alguna forma más sencilla de listar categorías hijas, similar a la forma predeterminada que provee WordPress?

<?php wp_list_categories('child_of=8'); ?> //¿qué categoría es '8'?!

<?php wp_list_categories('child_of=clientes'); ?> //mucho mejor, pero no funciona

Preferiría evitar usar otra consulta en el loop, pero para que tenga sentido para otros desarrolladores, podría tener que hacerlo.

0
Todas las respuestas a la pregunta 2
1

Puedes obtener el ID a partir del slug de manera bastante sencilla:

// Obtener la categoría por su slug
$category = get_category_by_slug( 'clientes' );
// Listar categorías hijas usando el term_id obtenido
wp_list_categories('child_of='.$category->term_id);
1 feb 2011 14:13:11
Comentarios

Casi sugiero algo similar usando get_term_by... get_cat_ID es más fácil de usar porque no hay necesidad de hacer referencia a propiedades de objetos. +1 de mi parte de todas formas, ¡sigue siendo una respuesta valiosa!.. :)

t31os t31os
1 feb 2011 14:19:52
4

¿Quieres obtener todos los hijos de una categoría específica? Eso es esencialmente para lo que sirve el parámetro child_of, para obtener todos los descendientes de un término (categoría).

Si solo quieres los términos que tienen un padre directo particular, entonces deberías usar parent en su lugar.

En cuanto al uso de un ID, esto debería funcionar...

<?php
// Obtener el ID para la categoría con nombre
$cat_term_id = get_cat_ID( 'mi-categoria' );

wp_list_categories("parent=$cat_term_id");
//wp_list_categories("child_of=$cat_term_id");
?>

Documentación de get_cat_ID.


Espero que esto ayude...

1 feb 2011 14:14:14
Comentarios

NOTA: get_cat_ID también espera el slug, y no el nombre, como con get_category_by_slug .. (sin embargo esto solo te dará el ID, y no un objeto).

t31os t31os
1 feb 2011 14:16:32

ehm, creo que tu nota está al revés :) get_cat_ID() espera el nombre, get_category_by_slug() espera el slug.

Rarst Rarst
1 feb 2011 14:20:09

@Rarst - Disculpas, error mío, de hecho espera el nombre (tenía este recuerdo en mi cabeza sobre una función de categoría que según la documentación espera un nombre, pero en realidad espera el slug - me equivoqué).. ;)

t31os t31os
1 feb 2011 14:36:49

Yo también recuerdo alguna función así, pero no es ninguna de estas dos... ¡qué alegría tener tantas funciones :)

Rarst Rarst
1 feb 2011 15:10:47