Consigli per lo Sviluppo Plugin

I Consigli di Luca nello Sviluppo di un Plugin

Per il momento, l'interesse mostrato da wpAndMore nei confronti di WordPress si è rivolto principalmente allo sviluppo di temi, magari per scopi commerciali, ma per il momento l'unico corso completo che abbiamo parla soltanto della creazione di una template. Ma WordPress non offre soltanto questi elementi per espandere le sue caratteristiche, esistono anche i Plugin che si comportano come programmi aggiuntivi che permettono di aggiungere funzionalità e strumenti utili alla propria installazione.

Contenuti Extra

Ti ho già presentato alcuni plugin utili con la serie Weekly Plugin ma quest’oggi voglio parlare allo sviluppatore che è in te, a colui che, quando non trova un plugin che fa al caso suo, prova il desiderio di creare delle funzionalità aggiuntive per la propria installazione WordPress.

Anziché riempire il tuo functions.php con funzioni incaricate di aggiungere funzionalità a WordPress piuttosto che al tema che si sta realizzando, potrebbe essere molto più intelligente andare a sviluppare un plugin; plugin che potremmo utilizzare anche in altre installazioni WordPress, condividere con gli amici e, perché no, renderlo disponibile all’interno della comunità pubblicandolo sui repository che WordPress.org ci mette a disposizione!

Nel video allegato a questo articolo, Luca Bartoli ci fornisce alcune utili informazioni per andare a creare un plugin correttamente sviluppato con il modello di programmazione ad oggetti, più sicuro (grazie alle funzioni WordPress) e internazionale.

Perché Sviluppare un Plugin con il Modello ad Oggetti?

Se ancora non hai incontrato il paradigma di programmazione ad oggetti sappi che è una tecnica di scrittura del codice, nel nostro caso PHP, che ci permette di definire degli oggetti (software) che possiamo far interagire tra loro. I principali punti a favore di questo paradigma sono una più semplice gestione e manutenzione di progetti complessi e il favorimento della modularità e riuso del codice, ma Luca condivide con noi anche le sue personali considerazioni sulle best practices di sviluppo plugin elencate in questi punti:

  • semplifica lo sviluppo – come detto precedentemente, sviluppare ad oggetti permette di avere un codice più pulito e di facile consultazione;
  • riduce il numero di bug – avere un approccio standard allo sviluppo di plugin permette di scoprire e risolvere più facilmente possibili problemi;
  • utilizza le risorse necessarie – perché altrimenti il plugin realizzato andrà semplicemente a rallentare la velocità complessiva del sito WordPress
  • mantiene il codice leggibile – e ci permette di modificare il nostro stesso codice anche dopo diversi anni.

Nonostante che molti plugin non utilizzano un modello di programmazione ad oggetti, questo non significa che non puoi abbracciare questo nuovo modello.

Lo Scheletro di un Plugin ad Oggetti

Già dopo pochi minuti dall’inizio del talk, Luca condivide con noi la struttura base di un plugin sviluppato ad oggetti:

Ma lavorare con una buona struttura non è un argomento che riguarda soltanto il codice, infatti, Luca ci mostra come sia possibile portare le best practices anche nella struttura dei nostri file condividendo con noi la seguente immagine:

Struttura File per Plugin WordPress

Struttura File

Dividendo i file per il loro scopo sarà più semplice capire chi fa cosa e inserire all’interno del file mio-plugin.php soltanto il bootstrap del plugin stesso (le funzioni essenziali alla sua creazione) permettendo di istanziare la classe principale contenuta all’interno di /core/classes.

Coding Standards

Quando si parla di sviluppo Plugin, o di Temi, da distribuire al pubblico una tra le cose più importanti riguarda il rispetto degli standard. Se non avete intenzione di condividere il vostro codice con sviluppatori esterni al vostro team, non è importante rispettare gli standard WordPress ma è comunque importante rispettare quelli che vi siete definiti, altrimenti sarà più difficile riuscire a fare un buon debug.

Se invece vuoi distribuire il tuo codice all’interno della comunità WordPress, rispettare gli standard definiti da questa piattaforma sarà utile per permettere anche ad altri sviluppatori di contribuire al codice e migliorarne le funzionalità, ma ci sono altri preziosi consigli che Luca condivide con noi all’interno della sua presentazione:

  • evita classi o file troppo lunghi – dare troppe responsabilità ad una classe si allontana del concetto ad oggetti e crea una classe troppo complicata;
  • scrivi il codice nell’ordine di esecuzione – in questo modo sarai in grado di prevedere dove si trova il codice che hai bisogno di modificare;
  • documenta il tuo codice – di fondamentale importanza sia per coloro che potranno modificare il tuo codice che per te stesso dato che dopo un pò di tempo, speso su progetti differenti, potrai avere la necessità di modificare il tuo stesso codice.

Utilizza le Funzioni di WordPress

Abbracciare il Codex e la sana pratica di cercare al suo interno ti permetterà di salvare delle ore di lavoro dato che, il più delle volte, esistono delle funzioni già create dal team di sviluppo di questa piattaforma che risolvono il problema che stiamo affrontando. Alcuni esempi che Luca ha condiviso con noi sono:

Queste funzioni, oltre che velocizzare il nostro sviluppo, possono essere utili per gestire automaticamente anche le dipendenze come nel caso di wp_enqueue_script() o wp_enqueue_style().

Internazionalizzazione dei Plugin

Se hai già sviluppato o utilizzato qualche plugin WordPress, ti sarai sicuramente accorto che è possibile accedere ad un gran numero di plugin pubblici collezionati all’interno del repository presente su WordPress.org. Dato che questa piattaforma parla molte lingue è una buona abitudine e non comporta lavoro aggiuntivo preparare il proprio plugin alla sua traduzione. Luca ci mostra tre semplici funzioni, pronte da utiizzare, che lavorano automaticamente con WordPress:

Debuggare il Proprio Codice

Con il termine debug ti permetterà di vedere se ci sono dei problemi in fase di sviluppo. Il problema è che WordPress ha una strana e fastidiosa abitudine di comunicarci quando qualcosa non funziona correttamente, semplicemente, ci mostra una schermata bianca senza darci alcun riferimento su che cosa è andato storto o quali sono gli errori che abbiamo commesso durante lo sviluppo del nostro plugin o tema che sia.

Per fortuna nostra, WordPress ama gli sviluppatori, e ci fornisce un semplice metodo che ci permette di notificarci se all’interno del nostro codice abbiamo sbagliato a scrivere qualcosa o se stiamo utilizzando delle funzioni che sono deprecate (ovvero non più sviluppate dal team WordPress), ovvero ci permette di fare il debug del nostro codice. Per attivare questa funzionalità ti basterà aprire il file wp-config.php presente nella root (cartella principale) della tua installazione WordPress ed aggiungere quanto segue:

Con questa singola linea di codice WordPress sarà in grado di comunicarci, direttamente all’interno delle sue pagine, gli errori che stiamo commettendo e ci permetterà di porvi rimedio. Ovviamente questa non è una soluzione utile se stiamo lavorando su una installazione WordPress che è già consultabile online, dato che romperà il layout del proprio sito andando ad aggiungere tutte le notifiche in testa al sito.

Ancora una volta (ricordo: dato che WordPress ama gli sviluppatori) ci viene fornita la possibilità di registrare questi messaggi all’interno di un file di log senza dover visualizzare questi errori nelle schermate del nostro sito. Tutto quello che dovrai fare è sostituire la riga di codice che ti ho presentato precedentemente con le seguenti:

Grazie a questo codice, WordPress sarà in grado di far visualizzare il nostro sito senza mostrare alcun errore e inserirà tutte le sue notifiche all’interno del file debug.log che potrai trovare all’interno della cartella /wp-content.

Occhio alle URL

Quando si scrive un plugin per WordPress non abbiamo la possibilità di conoscere a priori la struttura del file contenuti al suo interno, anche se molti utenti utilizzano la struttura di default di questa piattaforma ci sono casi in cui, come ci ha spiegato Maurizio nel suo intervento sulla sicurezza WordPress, dove è necessario modificare la struttura dei file per aumentarne (appunto) la sicurezza.

Per risolvere questo problema esistono diverse funzioni:

Un altra pratica molto comoda, sopratutto se abbiamo appena iniziato a scrivere il nostro primo plugin, è quella di dichiarare una costante che punta direttamente alla cartella del plugin in questo modo:

 Attiva, Disattiva e Rimuovi il tuo Plugin

A seconda del plugin che stai sviluppando, ad esempio stai sviluppando un plugin che permette di creare una galleria fotografica ed hai la necessità di creare una nuova tabella all’interno del database, ci sono alcune cosa che è buona pratica fare durante l’attivazione, la disattivazione e la rimozione del plugin.

Durante la fase di attivazione è una buona pratica registrare un Hook che potremo utilizzare per collegare tutte le azioni che il nostro plugin dovrà utilizzare, alcuni esempi:

  • creazione di una nuova tabella del database;
  • impostare e modificare le rewrite rule;
  • impostare i ruoli e le capabilities;

Durante la disattivazione del plugin, lo stesso WordPress, ci consiglia di andare a disattivare tutte quelle impostazioni che abbiamo impostato durante l’attivazione ma ci ricorda di non rimuovere i dati che il nostro plugin è andato a salvare. Questo perché anche nel semplice aggiornamento di WordPress quello che viene fatto in automatico è disattivare tutti i plugin, aggiornare il core WordPress e successivamente riattivare tutti i plugin.

A questo punto è facile capire che se rimuovessimo tutti i dati ogni volta che il nostro utente installa una nuova versione della piattaforma, dovrà eseguire nuovamente il processo di configurazione del plugin che, a seconda del numero delle impostazioni, può risultare una pratica lunga e noiosa (pensa alle impostazioni di WordPress SEO 😉 ). Quindi, per eseguire tutte le operazioni che dobbiamo svolgere in fase di disattivazione dovremmo creare la nostra funzione collegandola al seguente Hook:

Se invece il nostro utente desidera rimuovere il nostro plugin, dobbiamo permettergli di disinstallarlo senza lasciare traccia della precedente installazione. Come ci ricorda Luca basta creare il file uninstall.php controllando prima che sia stato lo stesso WordPress a richiedere la rimozione del plugin utilizzando il seguente codice:

Conclusioni

All’interno della sua presentazione Luca condivide con noi anche alcuni concetti di sicurezza e alcune dritte per sfruttare le novità apparse in PHP 5.3 ma sinceramente non mi sono sentito di inserirle perché non le conosco a fondo e devo ancora approfondire questi argomenti. Se però sei interessato a vedere la sua presentazione o a consultare le slide, come per ogni articolo, ti basterà andare in cima a questa pagina e selezionare il media che preferisci cliccando sui bottoni presenti nella matita.

Spero che questo articolo ti sarà utile per fare chiarezza su alcuni concetti dello sviluppo plugin e se non ne hai ancora sviluppato uno, potresti iniziare a fare qualche tentativo seguendo questi stessi suggerimenti. Oltre a questo, volevo ricordarti che inizierò a pubblicare il corso “Apprendi PHP con WordPress” che magari non ti sarà di grande aiuto a te che già sei interessato a sviluppare plugin, ma potrebbe essere di aiuto a qualche tuo amico o collega che non conosce questo linguaggio e che vuole iniziare una carriera WordPress. Ti aspetto per i prossimi articoli!

Lascia il tuo Pensiero

5 Responses to “I Consigli di Luca nello Sviluppo di un Plugin”

      • Gianluca

        Si, ho letto tt gli articoli che avevo perso (le prime due pagina del sito) e continuo a seguire i tuoi consigli sulle fonti (WP Daily,MattReport,ecc) per non restare indietro.
        Al momento mi sto interessando alle API, cosa mi consigli di leggere?

        Rispondi