WordPress: archivio mesi precedenti come lista a discesa

Un altro noioso articolo tecnico, a beneficio di chi come me usa WordPress per il proprio blog… :wink:

Era da un po’ di tempo che volevo modificare i link all’archivio dei mesi precedenti del blog, nella colonna laterale. Visto che il blog invecchia, i mesi aumentano e l’elenco comincia a diventare un po’ troppo ingombrante, pensavo infatti di sostituirlo con una lista a discesa dalla quale selezionare il mese desiderato.

La porzione di codice del file sidebar.php che visualizza l’archivio in modo “standard” (nel template di default, per capirci) come elenco puntato di link è questo:

<li>
<h2>Archivio</h2>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>
</li>

Cercando un po’ in giro ho scoperto che per implementare una lista a discesa avrei dovuto usare invece questo codice (utilizzato anche in molti dei template che si trovano in rete):

<form name="archiveform" action="">
<select name="archive_chrono" onchange="window.location
=(document.forms.archiveform.archive_chrono
[document.forms.archiveform.archive_chrono.selectedIndex].value);">
<option value=''>Scegli un mese</option>
<?php get_archives('monthly','','option'); ?>
</select>
</form>

Il codice in effetti funziona, ma ha un problema, che per molti può essere insignificante, ma per me è invece molto importante: non è valido come XHTML Strict!

Allora ci ho studiato un po’ sopra e alla fine sono riuscito a renderlo valido apportando alcune modifiche: prima di tutto occorre sostituire nel tag “form” l’opzione “name” con l’equivalente “id” e poi bisogna includere il tag “select” in un paragrafo. Già che c’ero, ho anche sostituito la funzione get_archives (che si usava nelle prime versioni di WP) con la più corretta wp_get_archives, adattando la sintassi dei parametri. Il codice risultante è il seguente:

<form id="archiveform" action="">
<p>
<select name="archive_chrono" onchange="window.location=(document.forms.archiveform.archive_chrono
[document.forms.archiveform.archive_chrono.selectedIndex].value);">
<option value=''>Scegli un mese</option>
<?php wp_get_archives('type=monthly&format=option'); ?>
</select>
</p>
</form>

Il risultato lo potete vedere in funzione nella colonna laterale del mio blog, qui a sinistra.
Per dovere di cronaca, preciso che il tutto è stato realizzato e testato su WordPress 1.5.2.

Informatica, Permalink

Abbiamo 30 commenti a questo articolo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

:smile: :grin: :mrgreen: :wink: :neutral: :sad: :cry: :eek: :confused: :cool: :lol: :razz: :oops: :mad: :evil: :twisted: :roll: :surprised: :!: :?: :idea: :arrow: :clap: :dance: :doh: :drool: :eh: :hand: :liar: :naughty: :pray: :shhh: :shifty: :sick: :silenced: :snooty: :think: :wall: :whistle: :love: :censored: :crazy: :food: :thumbup: :ciao: :cheers: :winky: :kiss: :rotfl: :ninja: