Menu delle pagine e delle categorie di Wordpress espandibili: come visualizzare solo la sezione corrente? (e breadcrumb…)
Un difetto di Wordpress è sempre stato quello di visualizzare, in sidebar, elenchi di categorie e pagine statiche completi. Per un blog con molte pagine statiche e/o categorie, e una gerarchia piuttosto profonda, questo significa riempire ogni pagina di tanti (troppi) link.
Occorre, ovviamente, comprimere (”fold”… esatto, come una vista a directory) i menu di pagine e categorie, ed espandere solo madri e figlie della sezione corrente. Vediamo la soluzione che ho scelto per BitMagazine, i plugin che ho usato e le modifiche che ho apportato ai file del tema.
I due plugin usati: Fold Page List e Fold Category List
I due plugin che ho usato sono Fold Page List e Fold Category List, dello stesso autore. Scaricateli, installateli sotto wp-content/plugins ed attivateli, come di consueto.
Le modifiche ai file del template di Wordpress
Purtroppo i due plugin non aggiungono opzioni alla bacheca di Wordpress: per attivarli e visualizzare menu e breadcrumb occorrerà modificare a mano i file del template di Wordpress.
Sidebar.php (per la lista delle pagine e/o delle categorie espandibili)
Aprite il file sidebar.php del vostro tema e cercate questo codice (incaricato a visualizzare i widget presenti nella vostra sidebar (sopra ai quali andremo ad inserire la lista delle pagine e/o delle categorie, pertanto rimuovetele dalla vostra sidebar, se già presenti, in modo da non avere doppioni:
<?php if ( !dynamic_sidebar(1) ): ?>
Sopra questa riga inserite uno di questi due codici (o entrambi):
Lista delle pagine
<div id="pages" class="widget widget_pages">
<h4>Pagine</h4>
<ul>
<?php
if (function_exists('wswwpx_fold_page_list')) {
$list = wswwpx_fold_page_list ('title_li=&echo=0');
echo preg_replace ('/<li class="(.*)current(.*)"><a .*>(.*)<\/a>/', '<li class="$1current$2">$3', $list);
}
else wp_list_pages('title_li=');
?>
</ul>
</div>
Il preg_replace che ho utilizzato fa in modo di rimuovere i link dalla pagina corrente e dai suoi “antenati”, per non avere link doppioni con il breadcrumb. Assicuratevi di attivarlo, quindi (vedete sotto).
Lista delle categorie
<div id="categories-450780121" class="widget widget_categories"><h4>Categorie</h4>
<ul>
<?php
if (function_exists('wswwpx_fold_category_list')) wswwpx_fold_category_list('title_li=&hide_empty=0');
else wp_list_categories('title_li=');
?>
</ul>
</div>
Page.php (per inserire il breadcrumb)
Per inserire il breadcrumb per le pagine (menu di navigazione orizzontale, simile ad un percorso di un file), aprite il file page.php del vostro template, cercate il codice relativo al titolo della pagina (di solito un h2 o un h1) e inserite, sopra di esso:
<?php if ( function_exists('wswwpx_page_breadcrumbs') ) wswwpx_page_breadcrumbs(); ?>
Potete vedere in azione il menu delle pagine e il breadcrumb nella pagina “File di configurazione di eMule” di BitMagazine: nel menu delle pagine vengono espanse solo le pagine “parenti” di “nodes.dat” (come la pagina di eMule), e i parenti non vengono linkati, perché già presenti nel breadcrumb (tranne le pagine figlie, come “nodes.dat“, che nel breadcrumb non sono presenti).
Come ripristinare il deep linking (autolink)
A questo punto sorge un problema “SEO”: ogni pagina o categoria non prende più un link da tutte le altre pagine o post del blog, perché sono state nascoste dentro il nuovo menu compresso. Per migliorare il linking interno del blog, quindi, consiglio di installare un plugin che linki in automatico le pagine e/o le categorie del vostro blog all’interno dei post (in base alle parole usate).
Vi rimando pertanto alla lettura del mio articolo precedente, “Un comodo plugin per auto linkare le pagine statiche nei post di Wordpress“
Articoli simili:
Se questo articolo ti è stato utile, segnalalo sul tuo sito! Puoi inoltre seguire comodamente gli aggiornamenti di Techlog tramite il feed RSS; infine puoi lasciare un commento se ti serve aiuto (o anche solo per un saluto); anche qui non serve registrarsi (sono abilitati anche i commenti anonimi; l'E-Mail serve, eventualmente, per ricevere le notifiche delle nuove risposte). ;-)





