Uno dei più stupidi aggiornamenti fatti alle API di WordPress, imho, è stato quello che ha eliminato la possibilità di visualizzare le categorie figlie di una predefinita categoria, senza visualizzare anche quelle “nipoti”.
Infatti usando la comune funzione di WordPress chiamata wp_list_categories()
utilizzando il filtro child_of
vengono visualizzati tutti i discendenti della categoria indicata e non solo quelli di primo livello, cosa decisamente scomoda se usiamo costrutti molto nidificati.
Per rimediare a questa mancanza ultimamente utilizzo all’interno del file functions.php
dei temi che produco il seguente codice che mima il risultato della funzione ufficiale del blog engine, limitandosi però al primo livello di discendenza.
Nulla di trascendentale, insomma, ma sicuramente molto comodo per creare menù contestuali.
[code]
/**
* @param $catID int ID della categoria genitrice
* @param $order string ASC o DESC
* @return $output string lista di link a categorie
*/
function get_category_children_only($catID=0,$order = ‘ASC’) {
global $wpdb;
global $cat;
$output = ”;
if (strtoupper($order) != ‘DESC’) $order = ‘ASC’;
$query = “select t.term_id as term_ids, t.name from $wpdb->terms t, $wpdb->term_taxonomy tx where t.term_id = tx.term_id and tx.taxonomy = ‘category’ and tx.parent = ‘”.intval($catID).”‘ group by t.term_id order by t.term_id $order”;
$results = $wpdb->get_results($query);
foreach ($results as $result) {
if ($cat == $result->term_ids) $selected = ‘ current-cat’;
else $selected = ”;
$output .= ‘
‘;
}
return $output;
}
[/code]
ciuaz