La funzionalità tipica di WordPress, quando avviate il sito anche senza applicare temi, prevede nella barra superiore l’elenco dei menu (in pratica le categorie) e dei sottomenu. Cliccando su uno qualsiasi dei menu, si finisce nella pagina dove vengono elencati tutti i suoi post (gli articoli che scrivete).
Tutto questo è possibile grazie all’uso di una funzione predisposta: wp_list_categories().
Gli argomenti che questa funzione permette di assumere sono molti. Riporto qui la lista dal sito ufficiale. Più sotto daremo un’occhiata alle principali e più usate (per il resto rimando alla pagina ufficiale inglese che troverete nelle fonti).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$args = array( 'show_option_all' => '', 'orderby' => 'name', 'order' => 'ASC', 'style' => 'list', 'show_count' => 0, 'hide_empty' => 1, 'use_desc_for_title' => 1, 'child_of' => 0, 'feed' => '', 'feed_type' => '', 'feed_image' => '', 'exclude' => '', 'exclude_tree' => '', 'include' => '', 'hierarchical' => 1, 'title_li' => __( 'Categories' ), 'show_option_none' => __('No categories'), 'number' => null, 'echo' => 1, 'depth' => 0, 'current_category' => 0, 'pad_counts' => 0, 'taxonomy' => 'category', 'walker' => null ); |
Ogni argomento va separato con una “&” (e commerciale). Se un argomento ha più valori, questi devono essere separati tra loro da una virgola. Nell’esempio seguente ordiamo secondo l’id delle categorie ed escludiamo le categorie con id 2 o 3:
1 2 3 |
<ul> <?php wp_list_categories('orderby=ID&exclude=2,3'); ?> </ul> |
Orderby e order parlano da soli: permettono di specificare l’ordine in cui le categorie appariranno. Orderby è il campo (che può essere ID, name, slug, count o term_group), mentre order identifica come ordinarle (ASC o DESC).
In number stabiliamo invece il numero massimo di categorie da stampare a video (corrisponde al LIMIT della query).
Con style specifichiamo se i menu devono apparire in lista (valore “list”, che è poi quello di default) oppure in blocchi separati (none).
Un altro argomento importante è hide_empty, che stabilisce se dobbiamo nascondere le categorie senza post (true, default) oppure mostrarle (false).
Per stampare solo i sottomenu di una certa categoria, dobbiamo passare a child_of l’id della categoria madre. Include ed exclude permettono invece di stabilire quali categorie devono essere incluse (escludendo tutte le altre) o escluse (includendo tutte le altre); exclude_tree è la versione estesa che permette di escludere una categoria e tutte le sue sottocategorie.
Se, per esempio, vogliamo escludere le categorie con id 10 e 15:
1 2 3 |
<ul> <?php wp_list_categories('include=10,15'); ?> </ul> |
Modificare l’aspetto del menu
Un’ultima nota, per i programmatori che preferiscono smanettare all’interno della grafica: il parametro title_li permette di formattare l’aspetto delle singole voci (racchiuse, per l’appunto, entro i tag <li></li>).
In alternativa è possibile agire direttamente nel css, modificando queste classi:
1 2 3 4 5 6 |
li.categories { ... } /* outermost list item */ li.cat-item { ... } li.cat-item-7 { ... } /* category ID #7, etc */ li.current-cat { ... } li.current-cat-parent { ... } ul.children { ... } |
(1) http://thinkingfutures.net/doing-environmental-scanning-part-3-starting-to-scan-2/