Cindy di Digital Ramble spiega come creare da zero un plugin WordPress per impostare le favicon di un sito tramite una pagina di opzioni, approfittandone per spiegare in modo semplice e chiaro i concetti basilari della creazione di plugin.
L’articolo originale è disponibile sul blog Digital Ramble, all’indirizzo
http://www.digitalramble.com/2006/06/06/34/
Panoramica
Ho scavato più in profondità nella documentazione di WordPress, perchè volevo che il mio plugin rispettasse alcuni criteri: volevo che avesse un pannello di amministrazione perchè NON volevo che chiunque lo usasse fosse obbligato a fare altro che impostare opzioni tramite il pannello. In altre parole, basta modifiche al codice.
Diverse ragioni per questo. Primo, non tutti gli utenti WordPress sono smanettoni come me. Secondo, è noioso anche per gli smanettoni come me cambiare temi o aggiornare WordPress e dover riapplicare tutte le piccole modifiche. Per questo motivo sto diventando la più grande fan dei plugin plug’n'play.
Per essere onesti, non sempre questo è evitabile. In particolare, gli elementi delle barre laterali non sono facilmente integrabili (credo sia questa l’idea alle spalle dei widget, ma non ho ancora approfondito abbastanza da esserne certa). In ogni caso ho già visto diversi metodi interessanti nel lavoro di altri autori di plugin, e credo sia possibile evitare molti di questi problemi.
Comunque sia, questo plugin riguarda le favicons. Questa era la mia lista dei desideri:
- Poter inserire una immagine arbitraria come favicon
- Poter specificare l’immagine rilevante nella mia cartella WordPress anzichè come URI assoluta.
- Poter modificare questa immagine in qualunque momento.
- Poter usare files gif/icon/png per la favicon
- Eventualmente usare l’immagine nel mio feed rss2
- Eventualmente usare l’immagine nel mio feed atom
- Tutto questo configurabile nel pannello di amministrazione
- Un plugin “plug and play” - da installare e attivare, null’altro.
Con mia sorpresa, questo è stato abbastanza semplice. Più o meno un ora per leggere la documentazione rilevante, circa 15 minuti per programmare, un’altra ora per il collaudo, e quasi due ore di scrittura e documentazione :-D Questa è un proporzione abbastanza tipica…
Il plugin completo è disponibile all’indirizzo
http://www.digitalramble.com/favicon-manager-wordpress-plugin/
(date un’occhiata sul lato).
Agganci agli header
Per aggiungere qualcosa agli header, senza obbligare l’utente a modificare i propri files di WordPress, potete usare
dove add_favicon_to_headers è una semplice funzione senza parametri che inserisce ciò che volete all’interno degli header. E’ molto semplice. La prima bozza della funzione è in grado di fare ciò che vorremmo facesse, durante i test:
Ovviamente questa è solo una prima stesura, giusto per essere certi che funzioni. E può funzionare, se inserite il codice qui sopra (all’interno dei codici ?php e con un indirizzo corretto al posto di example.ico) in un file con estensione .php nella vostra cartella dei plugin. Esiste infatti un semplice favicon plugin che fa esattamente questo ma non è configurabile come ho detto nella mia lista dei desideri ;-)
Database
Per avere valori persistenti e recuperabili, ho dovuto fare uso delle utilità a livello database offerte in WordPress. Ci sono add_option, update_option e get_option per un interfacciamento semplice. Quindi farò in modo di verificare che sia presente un dato nel database con l’indirizzo della favicon:
A questo punto il database ha ora un nuovo elemento, con un valore vuoto (una stringa di testo) disponibile per questo plugin. Ho provato a usare nomi lunghi e descrittivi (nelle funzioni, N.d.T.) per ridurre l’eventualità di una collisione di name space. Sarebbe stato più semplice per le mie dita usare solo “favicon”, ma ovviamente sarebbe stata più alta la possibilità che qualcuno abbia avuto prima o poi la mia stessa brillante idea.
Questo significa che l’aggancio ora può recuperare valori dal database:
Ora potete vedere perchè ho usato le variabili fino ad ora :-). La funzione get_favicon_type è un’altra funzione che ho scritto (e non ho incluso sopra per chiarezza) che restituisce il tipo corretto (x-icon, gif, jpg, png) a seconda del nome della favicon. In questo modo la funzione è pronta qualunque sia l’input dell’utente (dovrei aggiungere un controllo nel caso l’estensione sia sconosciuta, ma ancora una volta sto cercando di rendere le cose più semplici possibile).
Pannello di amministrazione
WordPress offre anche un set diretto di funzioni per crare un pannello di amministrazione. E’ stato decisamente semplice. Per prima cosa è presente un aggancio per inserire un nuovo menù sotto il menu Opzioni (potete fare anche altro, ma per cose basilari come queste, Opzioni è più che sufficiente).
Quindi, tutto ciò che questo produce è l’inserimento di un oggetto menu. L’oggetto specifica a sua volta la funzione che definirà la pagina. Quindi, la funzione inserirà il codice necessario a permettere gli input e il resto. Questa pagina dovrà inoltre poter aggiornare i record nel database in modo che gli agganci della testata possano ricevere i valori corretti da inserire nella stessa. In questo modo le cose iniziano a essere collegate. Una prima stesura della pagina di opzioni:

6 commenti
Ciao grazie delle spiegazioni ma io non riesco a far apparire la mia favicons! Potresti contattarmi o ti contatto io per aiutarmi un secondo? Non sò dove sbaglio perfavore ci sto combattendo da ore!
I tuoi complimenti saranno diretti a Cindy / DigitalRamble, visto che è lei l’autrice sia del plugin che dell’articolo… Noi ci siamo limitati a tradurlo in italiano :-) Comunque sia, felici di poterti essere d’aiuto.
Per noi il plugin funziona senza problemi, forse avrai saltato qualche passaggio, visto che questo tutorial è orientato più a neo-programmatori di plugin che a utenti finali del plugin in questione. Riassumendo, questi sono i passi necessari all’uso:
1) Scaricare il plugin dalla pagina http://www.digitalramble.com/favicon-manager-wordpress-plugin/
2) Attivare il plugin nella propria interfaccia WordPress
3) Posizionare una immagine adatta ad essere una favicon (Favicon Generator) in un punto raggiungibile del proprio webserver
4) Sotto Opzioni->Favicon inserire l’URL completa dell’immagine (basta raggiungerla con un browser e copiare quella URL) e salvare le opzioni.
Forse è un problema dell’immagine, o forse è l’URL che non è corretta.. Prova a controllare, altrimenti dacci qualche altro dettaglio.
io ho fatto tutto come hai detto tu ma non funziona lo stesso! non sò se tu hai msn cosi mi puoi aiutare in “diretta”…veramente non capisco…la favicon è 16×16 non capisco….boh…chiedo aiuto….
probabilmente non hai inviato l’immagine correttamente via http://ftp. ho provato a scaricarla sia con un browser che con wget, e risulta a 0 bytes, quindi forse è l’upload non è andato a buon fine. riprova a inviarla, probabilmente è solo quello.. :-)
poi controlla che il tema del tuo wordpress preveda nell’header una chiamata a wp_head(); nel suo codice, altrimenti il codice per la favicon non sarà inserito!
— messaggio originale —
- apri header.php
- cerca il tag </head>
- *sopra* aggiungi una chiamata a <?php wp_head(); ?>
- salva e sovrascrivi header.php sul webserver
- controlla (anche osservando il sorgente del sito) che a questo punto dovrebbe vedersi la favicon :-)
——————————
Grazie Grazie!!! In poco tempo grazie all’efficentissimo Paolo in pochissimo tempo ho risolto! Grazie!
L’autore del tema del tuo sito internet aveva rimosso dalla header la chiamata a wp_head(); , che serve a far includere dinamicamente elementi nella sezione head, ed è sfruttata da questo plugin tramite il primo aggancio agli header.
Questo e un ftp non andato a buon fine hanno creato qualche complicazione, ma nulla che non si possa risolvere con un po’ di pazienza. :-) Felici di esserti stati d’aiuto.
3 trackback
[...] Anatomia di un plugin WordPress Pixline ha tradotto un lungo articolo di Digital Ramble in cui viene spiegato passo per passo come creare da zero un plugin [...]
[...] risorsa tradotta in italiano si può trovare sul sito [...]
[...] Anatomia di un plugin per WordPress, un esempio, passo a passo, della creazione di un plugin. [...]