Verificar si una categoría es padre o no desde su ID

6 mar 2011, 02:49:12
Vistas: 19.5K
Votos: 2

La pregunta es simple (y tampoco sé la respuesta ;)
Solo quiero verificar si una categoría tiene hijos (o es ancestro) a partir de su cat-id con una función.
Ejemplo:
function check_category ($catid){<br/>............<br/>...//true si es ancestro, false si no<br/>return $result;<br/>}
Nota: Solo puedo pasar el parámetro cat-id a la función porque necesito usarla en functions.php
Gracias de antemano...

0
Todas las respuestas a la pregunta 2
6

Puedes hacer algo como esto:

function categoria_tiene_padre($catid){
    $categoria = get_category($catid);
    if ($categoria->category_parent > 0){
        return true;
    }
    return false;
}

y usarlo así:

if (categoria_tiene_padre('22')){
   //verdadero: existe una categoría padre
}else{
   //falso: esta categoría no tiene padre
}

Actualización:

Para verificar lo contrario (si una categoría tiene hijos) puedes usar get_categories

$hijos = get_categories(array('child_of' => id,'hide_empty' => 0));
if (count($hijos) > 1){
    //tiene hijos
}else{
    //no tiene hijos
}
6 mar 2011 09:50:00
Comentarios

El primer fragmento probablemente se puede simplificar a return $category->category_parent.

Rarst Rarst
6 mar 2011 21:58:21

@Bainternet, lo siento pero hice la pregunta incorrectamente. Quiero saber si esta categoría ($catid) es la última. Es decir, si una categoría no tiene hijos entonces es la última. Gracias de antemano...

Alper Alper
6 mar 2011 23:06:28

Entonces necesitas lo opuesto, en lugar de comprobar si tiene un padre, quieres comprobar si tiene categorías hijas?

Bainternet Bainternet
6 mar 2011 23:33:01

@Bainternet, sí y he resuelto mi problema con: $catlist = wp_list_categories('echo=0&orderby=id&hide_empty=0&title_li=&child_of='.$categoryid); if (($catlist)!='<li>No categories</li>')

Alper Alper
7 mar 2011 02:42:11

@Alper, revisa la respuesta nuevamente, he añadido una forma mucho mejor de hacerlo.

Bainternet Bainternet
7 mar 2011 03:01:21

@Bainternet, guau... es perfecto (y una idea muy inteligente), muchas gracias...

Alper Alper
7 mar 2011 04:41:08
Mostrar los 1 comentarios restantes
2

Echa un vistazo al Codex: http://codex.wordpress.org/Function_Reference/get_category_parents

// devuelve verdadero o falso    
function check_category( $cat_id ){
    $parent = '';
    $parent = get_category_parents( $cat_id );
    return empty($parent);
}
6 mar 2011 12:02:25
Comentarios

No creo que esto funcione, por la mecánica de get_category_parents() su salida siempre incluirá al menos la categoría misma.

Rarst Rarst
6 mar 2011 22:00:30

Lo siento, pero hice la pregunta incorrectamente. Quiero saber si esta categoría ($catid) es la última en la jerarquía. Es decir, si una categoría no tiene hijos entonces es la última... Gracias de antemano...

Alper Alper
6 mar 2011 23:06:46