Chi è solito creare template per WordPress o chi si è trovato a dover modificare il proprio avrà notato che le funzioni che abbiamo a disposizione per lavorare con le categorie di WordPress non sono poi molte. Spesso bisogna, infatti, andarsi a spulciare documentazione e sorgenti, per trovare il modo di fare quello che vogliamo.
Per questo voglio condividere con voi alcune funzioni che ho creato ad hoc e che mi sono tornate utili in vari template. Vediamole insieme.
Nota: ovviamente il codice delle funzioni che seguono andrà inserito nel file functions.php del vostro template.
Primo problema: mi trovo dentro ad un Loop e vorrei sapere a che categoria appartiene il post corrente. Fin qui è semplice, possiamo usare la seguente funzione:
$category = get_the_category();
return $category[0]->term_id;
}
Restituirà l’ID della prima categoria a cui il post appartiene.
Bene, e se invece fossi fuori dal Loop, ad esempio nella sidebar? Potrei usare la stessa funzione di prima, ma ho riscontrato spesso alcuni problemi (ad esempio sbagliava a restituirmi l’ID). Ecco allora cosa usare:
global $wp_query;
$wp_query->is_category;
$objCat = $wp_query->get_queried_object();
return $objCat->term_id;
}
Chiaramente potete chiamare queste funzioni come vi pare, io ho solo dato un nome indicativo.
Secondo problema: analogamente, potrebbe servirci l’ID della categoria padre. Nel caso fossimo dentro al Loop, c’è poco da fare, dobbiamo andare a prendercelo direttamente dal database:
global $wpdb;
$sql = "SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '$cat'";
return $wpdb->get_var($sql);
}
La variabile $cat che viene passata alla funzione, è l’ID della categoria di cui vogliamo ottenere il padre. Possiamo passarle un intero, oppure recuperare la categoria corrente, con la funzione get_cat_inside_loop().
Se invece ci troviamo fuori dal Loop, la funzione che ci serve è molto simile a quella per la categoria:
global $wp_query;
$wp_query->is_category;
$objCat = $wp_query->get_queried_object();
return $objCat->parent;
}
Funzioni come queste che vi ho presentato posso servire in vari casi, per personalizzare i comportamenti di determinati oggetti all’interno del template. Ad esempio, se vogliamo che un determinato testo compaia nella sidebar solamente quando ci troviamo all’interno di una determinata categoria (con ID = 4, nell’esempio seguente) o in una sua sottocategoria, potremo scrivere:
echo "Testo da mostrare";
}
Se avete domande o problemi, lasciate pure un commento e vedrò di aiutarvi come posso.
Spero di esservi stato utile anche stavolta!




Grazie per la risposta.
Purtroppo non riesco a nidificarle!
Inserisco quel valore in un widget?
Ciao,
come hai fatto a impostare le tue categorie come sono nel tuo blog?
Scusa, ma non sapevo come contattarti
Uhm.. in che senso? Non hanno niente di particolare le mie categorie.
Sono semplicemente annidate, che è un parametro di default della funzione
wp_list_cats. Poi il resto è fatto con i css.