Visualizzare le categorie “figlie” in WordPress

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.

/**
 * @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 .= '<li class="cat-item cat-item-'.$result->term_ids.$selected.'"><a href="'.get_category_link($result->term_ids).'" title="visualizza articoli della categoria '.$result->name.'">'.$result->name.'</a></li>';

    }

    return $output;
}

ciuaz

  • Posso consigliarti di dare uno sguardo a WordPress Portal sul sito del progetto Argilla? :D

    C’è una funzione molto simile, elaborata da Roberto Ostinelli:
    wpp::list_pages_of_section($arguments = ‘&title_li=’)

    …e un po’ di altre cosine carine. ;)

    Se ovviamente volessi collaborare… appena possibile metto il sorgente su Google Code. :P

  • tempo fa mi sembrava di essere l’unico a necessitare queste ‘folli’ funzioni.. contento di vedere che non è così :)

    r.

  • ciao non ho caito bene in pratica questo script non mostra la lista delle categorie per esteso? io cercavo qualcosa che mi comprimesse le categorie per poi espandere e mostrare le sottoc categorie in modo tale da creare un menu..non so semi son spiegato..un saluto..sarei felicissimo se mi dai una dritta..

  • grazie lo stesso scusa il disturbo

%d bloggers like this: