Funzioni per ottenere la categoria degli articoli in WordPress

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”;
}

Condividi i miei articoli ...
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • RSS

2 Commenti a “Funzioni per ottenere la categoria degli articoli in WordPress”

Lascia un Commento

Voices inside-Driven to tears