La gestione degli archivi

Scritto il 29 dicembre 2008 da Maurizio Pelizzone

Condividi:

La gestione degli archivi di un blog è una di quelle cose spesso trascurata e demandata ad un semplice elenco nella sidebar.
Ammetto che per molto tempo è stata sottovalutata anche dal sottoscritto, ma quando alcune persone mi hanno fatto notare quanto fosse difficile recuperare le informazioni già “archiviate” ho incominciato a pensare come poterli organizzare in modo che la loro consultazione fosse più agevole.

WordPress mette a disposizione una funzione chiamata “wp_get_archives” che permette di creare liste organizzare secondo diversi criteri ma, dopo aver fatto qualche prova, mi sono reso conto di non riuscire ad ottenere nulla che mi piacesse.

Quello che avevo in testa era un elenco di tutti i posts raggruppato per mese e sono così passato ad utilizzare “get_posts“.

Questa funzione fa parte del “core” di wordpress e si occupa restituisce un array di “posts” sulla base dei parametri passati.
Fatto questo è stato sufficiente preparare un ciclo “foreach” attorno all’array dal quale richiamare le informazioni che mi servivano (id,data e titolo).

Dicono che un esempio vale più di mille parole quindi ecco quello che ho prodotto:

  1. /*
  2. * 20.12.2008 | maurizio
  3. * return html list with all posts grouped by month
  4. */     
  5. function wp_getallpost() {
  6.         // variables declaration
  7.         $archives = "";
  8.         $monthname = "";
  9.         // get all posts
  10.         $lastposts = get_posts('numberposts=-1&orderby=date');
  11.         foreach($lastposts as $post) :
  12.                 $month = mysql2date('m', $post->post_date );
  13.                 $year = mysql2date('Y', $post->post_date );
  14.                 if ( $monthname <> mysql2date('F', $post->post_date ) ) {
  15.                         // check if i need to close list
  16.                         if ( $monthname != "" ) { $archives .= "</ul>"; }
  17.                         $archives .= "<p><strong><a href='".get_month_link($year, $month)."'>";
  18.                         $archives .= mysql2date('F Y', $post->post_date );
  19.                         $archives .= "</a></strong></p>";       
  20.                         $archives .= "<ul class='ba-single-column'>";
  21.                         // change current month
  22.                         $monthname = mysql2date('F', $post->post_date );        
  23.                 }
  24.                 $archives .= "<li>";       
  25.                 $archives .= mysql2date(' d | ', $post->post_date );
  26.                 $archives .= "<a href='" . get_permalink($post->ID) . "'>" . $post->post_title . "</a>";
  27.                 $archives .= "</li>";
  28.         endforeach;
  29.         $archives .= "</ul>";
  30.         return $archives;
  31. }

Penso che il codice si commenti e non mi dilungo quindi in inutili spiegazioni.
Unica nota su cui richiamare l’attenzione è l’utilizzo della funzione “get_permalink” la quale mi restituisce il permalink sulla base della struttura impostata .

Soddisfatto del codice prodotto ho poi iniziato a preparare un plugin che rendesse riutilizzabile il tutto sino a che, spinto da una sana curiosità, ho cercato se nell’extend non esistesse già qualcosa di simile.

clean-archives-reloaded

Il risultato è stato questo: Clean Archives Reloaded.
Il plugin di cui sopra, oltre a fare tutto quello che avrei fatto io, integra una gestione della cache ed utilizza jquery per migliorare la navigazione degli archivi.

Il risultato prodotto lo potete trovare nella mia nuova pagina degli archivi.

Questo articolo è stato pubblicato il 29 dicembre 2008 alle 8:33 am ed è stato letto
Archiviato sotto featured, sviluppo.

Se questo post ti è piaciuto puoi iscriverti al mio Feed Rss e ricevere direttamente gli aggiornamenti di questo blog sul tuo FeedReader oppure puoi decidere di offrirmi un caffè.
Se ti va puoi lasciare un commento e leggere quelli degli altri, ma se preferisci puoi passare direttamente al .


Lascia un messaggio