Funzioni per ottenere la categoria degli articoli in WordPress

By daniele at 18 Dicembre, 2008, 10:32 am

Vorrei riportare integralmente un articolo molto utile a chi come me sviluppa siti web con WordPress. L’articolo originale è stato preso da questo Blog molto interessante. Ringrazio l’autore per aver messo a disposizione della rete la sua esperienza e spero non se ne abbia a male se pubblico il suo articolo sul mio Blog.

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:

function get_cat_inside_loop(){
    $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:

function get_cat_outside_loop(){
    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:

function get_parent_cat($cat){
   
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:

function get_parent_cat_outside_loop(){
    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:

if(get_cat_outside_loop() == 4 || get_parent_cat_outside_loop() == 4){
   echo
“Testo da mostrare”;
}

Categories : Informatica | Wordpress

Comments
Daniele Dicembre 18, 2008

Ciao. Non ne ho a male, anzi mi fa piacere che i miei articoli siano apprezzati e diffusi ;)
L’importante è che, come hai già fatto, venga riportata la fonte.
Ciao!

daniele Dicembre 18, 2008

Grazie per aver lasciato il commento, come te credo che la diffusione della conoscenza possa solo che far crescere tutti. A presto, Daniele

Lascia un commento