Verificare se una categoria è genitore dal suo ID

6 mar 2011, 02:49:12
Visualizzazioni: 19.5K
Voti: 2

La domanda è semplice (non conosco nemmeno la risposta ;)
Voglio solo verificare se una categoria ha figli (o è un antenato) dal suo cat-id con una funzione.
Esempio:
function check_category ($catid){<br/>............<br/>...//true se è antenato, false se non lo è<br/>return $result;<br/>}
Nota: Posso passare solo il parametro cat-id per la funzione perché devo usarlo in functions.php
Grazie in anticipo...

0
Tutte le risposte alla domanda 2
6

Puoi fare qualcosa del genere:

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

e usarla in questo modo:

if (category_has_parent('22')){
   //vero, c'è una categoria genitore
}else{
   //falso, questa categoria non ha un genitore
}

Aggiornamento:

per verificare il contrario (se una categoria ha figli) puoi usare get_categories

$children = get_categories(array('child_of' => id,'hide_empty' => 0));
if (count($children) > 1){
    //ha figli
}else{
    //non ha figli
}
6 mar 2011 09:50:00
Commenti

Il primo snippet può probabilmente essere semplificato in return $category->category_parent.

Rarst Rarst
6 mar 2011 21:58:21

@Bainternet, mi dispiace ma ho posto la domanda in modo errato. Voglio sapere se questa categoria ($catid) è quella più in fondo? Intendo dire, se una categoria non ha figli allora è quella più in fondo... Grazie in anticipo...

Alper Alper
6 mar 2011 23:06:28

Quindi ti serve l'opposto di quello, invece di verificare se ha un genitore vuoi verificare se ha categorie figlie?

Bainternet Bainternet
6 mar 2011 23:33:01

@Bainternet, sì e ho risolto il mio 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, controlla di nuovo la risposta, ho aggiunto un modo molto più elegante per farlo.

Bainternet Bainternet
7 mar 2011 03:01:21

@Bainternet, wow... è perfetto (e un'idea molto intelligente), grazie mille...

Alper Alper
7 mar 2011 04:41:08
Mostra i restanti 1 commenti
2

Dai un'occhiata al Codex: http://codex.wordpress.org/Function_Reference/get_category_parents

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

Non credo che funzionerà, per meccanica get_category_parents() il suo output conterrà sempre almeno la categoria stessa.

Rarst Rarst
6 mar 2011 22:00:30

Mi scuso ma ho posto la domanda in modo errato. Voglio sapere se questa categoria ($catid) è quella finale? Intendo dire, se una categoria non ha figli allora è quella finale... Grazie in anticipo...

Alper Alper
6 mar 2011 23:06:46