Verificar si una categoría es padre o no desde su ID
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...
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
}
El primer fragmento probablemente se puede simplificar a return $category->category_parent.
Rarst
@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
Entonces necesitas lo opuesto, en lugar de comprobar si tiene un padre, quieres comprobar si tiene categorías hijas?
Bainternet
@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, revisa la respuesta nuevamente, he añadido una forma mucho mejor de hacerlo.
Bainternet
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);
}
No creo que esto funcione, por la mecánica de get_category_parents() su salida siempre incluirá al menos la categoría misma.
Rarst