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…
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.








17 Gennaio 2006 - ore 22:08
ciao zelig…..ho una curiosità: è possibile fare lo stesso lavoro con le categorie del sito, però escludendone alcune??? io ho già una lista a discesa per le categorie, però non volevo visualizzarle tutte….
ti ringrazio
18 Gennaio 2006 - ore 13:54
@Situation: dai un occhiata a questa FAQ per il codice che consente di escludere alcune categorie, dovrebbe fare al caso tuo: http://www.wordpress-it.it/wiki/Main/FaqGenerali#toc29
20 Gennaio 2006 - ore 20:33
sì, conosco i comandi sort e exclude (d’altronde avendo passato settimane a scervellarmi alla fine qualcosa ho assimilato
)……però sembra che con il menù a tendina (lista a discesa, come la chiami tu) non funzionino….
io ho usato un codice che ha creato un ragazzo e che mi ha mandato, te lo mostro subito….
” method=”get”>
nella parentesi che segue la stringa “dropdown_cats” ho provato a inserire i comandi sort e exclude, però senza risultati.
tu conosci altri parametri che possano essere validi per “dropdown_cats”, oppure sai dirmi se devo completamente cambiare codice per potere utilizzare sort e exclude? (e in tal caso, puoi aiutarmi in questo?)
grazie mille
20 Gennaio 2006 - ore 20:34
oddio, il codice che avevo incollato è sparito……se hai bisogno te lo mando via email…
20 Gennaio 2006 - ore 23:19
Putroppo, come hai potuto notare, scrivere del codice HTML nei commenti porta a risultati poco piacevoli, perchè in fase di visualizzazione viene interpretato come il resto del codice della pagina…
Sto cercando una soluzione anche per questo, ma la vedo dura!
Nel frattempo è meglio se mi mandi un’email, si.
23 Gennaio 2006 - ore 21:46
Ok, ho la soluzione al quesito di Situation.
Anzi, ancora meglio, ho un plugin!
2 Maggio 2007 - ore 16:36
grazie mille mi è stato molto utile..però
con IE mi si adatta perfettamente al box del mio tema, (Borderlinechaos)
invece con firefox il form mi esce dal box
come posso rimediare?
2 Maggio 2007 - ore 21:22
Silvana, puoi aggiungere un codice di stile per impostare una larghezza fissa in pixel per la lista. Il risultato è questo:
<form id="archiveform" action="">
<p><select name="archive_chrono" onchange="window.location=(document.forms.archiveform.archive_chrono[document.forms.archiveform.archive_chrono.selectedIndex].value);" style="width:120px">
<option value=''>Scegli un mese</option>
<?php wp_get_archives('type=monthly&format=option'); ?>
</select></p>
</form>
Nota che ho aggiunto il codice style=”width:120px”, dove appunto viene impostata la larghezza, in questo caso a 120 pixel.
Ovviamente le righe contenenti un testo più lungo verranno troncate, però almeno il template è salvo!
2 Maggio 2007 - ore 23:51
grazie mille per la celere risposta
in effetti si tronca me-se ma non fa nulla
ottimo
:D
7 Giugno 2007 - ore 06:46
Ciao a tutti, ragazzi.
Volevo sapere se esiste un plugin che mostra tutti gli articoli di una categoria con un menù a tendina.
Vorrei che si visualizzasse solo quando si entra nella categoria con un menù a tendina discendente che mostra tutti gli articoli inseriti.
Chiedo Troppo?????????
Grazie
7 Giugno 2007 - ore 08:42
Non che io sappia, Luca.
7 Giugno 2007 - ore 09:34
E il random delle immagini nella sidebar con la possibilità di scegliere le immagini nelle pagine da randomizzare??
Grazie Zelig.
7 Giugno 2007 - ore 09:50
Ti consiglio di cercare nel Wordpress Plugin Database.
6 Luglio 2007 - ore 17:43
Salve a tutti, ho un piccolissimo problema, vi spiego.
io vorrei che dopo l’onchange la pagina si riposizionasse nel punto in cui era, dove c’è la select e nn all’inizio, pome potrei fare?
Grazie
7 Luglio 2007 - ore 15:32
vorrei spiegarmi meglio,
io con l’onchange non apro un altra pagina ma rimango nella setssa e popolo un altra select con i valori della precedente, la mia è una multi combobox che si trova a fondo pagina ed il mio problema sarebbe che ad ogni onchange la pagina si posiziona all’inizio.
Come potrei fare??
Grazie.
9 Luglio 2007 - ore 13:11
Inserire un “segnalibro” nella pagina in corrispondenza dei box e aggiungerlo ai link?
(premetto che è solo un’ipotesi, io non ho mai provato)
9 Luglio 2007 - ore 18:05
Ciao,
grazie del consiglio ma purtroppo non funziona inquanto il mio nn è un a href ma un “onChange=”window.location=”,
Come posso fare???
Sto cercando ma nn tovo nulla di utile…chi mi puo aiutare??
ciao
12 Luglio 2007 - ore 13:33
Io passo…
24 Luglio 2007 - ore 22:44
Ciao!
Ho un paio di dubbi.
Il codice che suggerisci deve sostituire interamente quello del theme in uso oppure si deve salvare qualcosa? Lo chiedo perchè altrimenti non capisco come venga fuori il titolo “archivio”.
Poi, vorrei sapere se è possibile inserire un limite alla visualizzazione dei mesi, raggruppandoli per anno.
25 Luglio 2007 - ore 13:01
Sergio, il titolo “archivio” lo devi inserire manualmente, eventualmente usando la funzione apposita di WP: _e(’Archivio’)
Per cambiare il numero di mesi visualizzati è possibile utilizzare i parametri della funzione wp_get_archives, ad esempio mettendo ‘type=monthly&limit=12′ verranno mostrati solo gli ultimi 12 mesi.
28 Dicembre 2007 - ore 11:51
Buone 2008 (primaditutto).
Sto curando un sito di una rivista e mi domandavo se era presentare la lista degli autori dei post come menu a discesa (dropdown).
Come potrai immaginare sarebbe molto utile per razionalizzare lo spazio delle popolate sidebar. Naturalmente mi accontenterei anche di plugins esistemti di tua conoscenza. Il WP sotto il quale ho pubblicato il dito è 2.3.1.
Grazie per il tuo prezioso lavoro!!
—
ps.: la causa maggiore dei divorzi? Sicuramente il matrimonio!!!:P
31 Dicembre 2007 - ore 12:51
Non saprei Groucho, mi dispiace. Al momento non ho tempo per studiarci sopra o per fare ricerche. Buon anno anche a te!
13 Gennaio 2008 - ore 17:31
Zelig, ho visto che hai wp 2.0.7 ma volevo chiederti cosa hai usato per fare la pagina http://zeligplanet.altervista.org/archivio
16 Gennaio 2008 - ore 09:30
@D4rkDev: niente di particolare, nella pagina “archives.php” ho messo le funzioni standard di WordPress “wp_get_archives” e “wp_list_cats”, con indicati i parametri per far comparire anche il numero di articoli presenti e un pizzico di CSS per impaginarli a 2 colonne!
24 Gennaio 2009 - ore 11:15
Ciao,

ho trovato utilissimo ia tua modifica; anche se io ho inserito il 1° codice e funziona benissimo!! Ora volevo fare la stessa cosa per le categorie ma non ci riesco mi dici quali sono i parametri da cambiare rispetto all’archivio mesi!
Grazie Paolo