Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress Plugins
Code

Creare un sistema di messaggistica personalizzata in WordPress, parte 4

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Creating a Custom WordPress Messaging System.
Creating a Custom WordPress Messaging System, Part 3

Italian (Italiano) translation by Roberta C (you can also view the original English article)

In questa serie, stiamo vedendo come possiamo realizzare un sistema che ci permetta di definire a livello di codice dei messaggi personalizzati da visualizzare in una pagina di amministrazione nel back-end di WordPress.

Se avete seguito la serie di tutorial, saprete che:

  • Abbiamo gettato le basi e sviluppato un po' ulteriormente il plugin che ho usato per tutta questa serie.
  • Abbiamo definito e utilizzato un hook personalizzato da usare per eseguire le impostazioni dei messaggi.
  • Abbiamo aggiunto un supporto per i messaggi di successo, di avviso e di errore che vengono eseguiti nella parte superiore di una data pagina di impostazioni.

Come accennato nel precedente tutorial:

Ma se avete già letto uno dei miei tutorial precedenti, saprete che io non sono un fan dei codici duplicati. Né  sono fan di avere una classe per fare molte cose. E, purtroppo, è esattamente quello che stiamo facendo qui.

E lo affronteremo in questa esercitazione finale. Alla fine, avremo una soluzione completa di refactoring che utilizza alcuni principi intermedi di programmazione orientata agli oggetti, come l'ereditarietà. Avremo anche alcuni metodi da usare a livello di codice o che possono essere registrati con il sistema di hook di WordPress.

Iniziamo dalla fine

A questo punto dovreste sapere esattamente di cosa avete bisogno nel vostro ambiente di sviluppo locale. In particolare, si dovrebbe avere ciò che segue:

  • 5.6.25 PHP e MySQL 5.6.28
  • Apache o Nginx
  • WordPress 4.6.1
  • Il tuo editor di codice preferito

Raccomando anche di usare la versione più recente del codice sorgente in quanto vi permetterà di seguire meglio i cambiamenti che stiamo andando a fare. Se non lo avete ancora fatto, va bene, ma mi raccomando di leggere le esercitazioni precedenti prima di andare avanti.

Nel precedente tutorial

Come ricorderemo ( o come accertato nel commento sopra), il precedente tutorial ci ha lasciato con un'unica classe che si occupa di troppe cose.

Lo sappiamo perché se dovessimo descrivere quello che fa la classe, non saremo in grado di dare una sola risposta. Dovremo dire che è responsabile della gestione dei messaggi di successo, di avviso, di errore e dell'esecuzione di ciascuno di loro indipendentemente l'uno dall'altro.

Se avessimo detto "Gestione di messaggi personalizzati", non avremmo precisato quanto era dettagliata la classe. Questo è quello che speriamo di risolvere in questo tutorial.

Nel tutorial finale

In particolare, stiamo andando a fare le seguenti cose:

  • rimuovere le vecchie impostazioni della classe messenger
  • aggiungere una nuova, più generica classe messaggio
  • aggiungere una classe di impostazioni del messenger con cui comunicare
  • introdurre metodi che possiamo usare indipendente da WordPress
  • razionalizzare la maniera in cui WordPress esegue i messaggi

Questo è il lavoro da fare, così andiamo avanti e iniziamo.

Facciamo il refactoring del nostro lavoro

Quando si tratta di fare il refactoring del nostro lavoro, è di aiuto sapere esattamente che cosa vogliamo fare. Nel nostro caso, ci rendiamo conto che abbiamo un sacco di codice duplicato che potrebbe essere condensato.

Inoltre, abbiamo tre diversi tipi di messaggi nei quali la loro esecuzione viene gestita esattamente nello stesso modo. E in questo caso, è un problema degli attributi HTML della classe.

Così, possiamo generalizzare tale codice per concentrarci su un tipo specifico, ottimizzare i metodi per aggiungere i messaggi di successo o il recupero dei messaggi di errore generalizzando un metodo che riconosca il suddetto tipo.

Quindi, lo faremo. Ma in primo luogo, alcune cose da fare.

1. Rimuovere le vecchie impostazioni del Messenger

Nel precedente tutorial, abbiamo lavorato con una classe chiamata Settings_Messenger. Finora è servita al suo scopo, ma adesso e per il resto del tutorial andiamo a fare un refactoring di questa classe.

Quando si tratta di questo tipo di refactoring, è facile voler semplicemente eliminare la classe e ricominciare da capo. A volte è meglio fare così, ma non in questo caso. Andiamo, quindi, a prendere la classe e facciamo un refactor di quello che già c'è.

Tutto questo per dire di non eliminare il file e di iniziare con uno nuovo. Lo terremo come traccia di quello che stiamo facendo durante questo tutorial.

2. Una nuova classe per le impostazioni del messaggio

In primo luogo, introduciamo una classe Settings_Message. Questa rappresenta qualsiasi tipo di impostazione di un messaggio che stiamo per scrivere. Cioè, gestirà i messaggi di successo, i messaggi di errore e i messaggi di avviso.

Per effettuare questa operazione, dobbiamo definire la classe, introdurre una singola proprietà, e stanziare un costruttore. Vediamo questo codice, e lo spiego un po' più sotto:

Si noti che abbiamo creato un attributo private, $messages. Quando la classe viene stanziata, creiamo un array multidimensionale. Ogni indice, identificato ciascuno da successo, errore o avviso, si riferisce al proprio array nel quale saranno archiviati i messaggi corrispondenti.

In seguito, abbiamo bisogno di essere in grado di aggiungere un messaggio, visualizzarlo e ottenere  tutti i messaggi. Tratterò ciascuno di loro in modo più dettagliato in un momento.

Aggiungere messaggi

In primo luogo, vediamo come si aggiungono i messaggi:

Questo messaggio prima prende la stringa in ingresso e poi sanifica i dati. Quindi controlla per vedere se è già presente nei messaggi di successo. In questo caso, lo restituisce semplicemente. Dopo tutto, non vogliamo messaggi duplicati.

In caso contrario, aggiunge il messaggio alla raccolta.

Ricevere messaggi

Il recupero dei messaggi avviene in due forme:

  1. ottendendo messaggi singoli in base al tipo
  2. ottenendo i messaggi sul display della pagina di amministrazione  (completo di sanificazione dell'HTML, ecc.)

Ricordate, ci sono momenti in cui potremmo voler visualizzare solo messaggi di avviso. Altre volte, potremmo voler visualizzare tutti i messaggi. Poiché ci sono due modi di fare questo, possiamo sfruttarne uno e quindi trarne vantaggio in un'altra funzione.

Sembra confuso? Venite con me e vi spiegherò tutto. Nella prima parte ci andiamo a concentrare su come eseguire il rendering dei messaggi in base al tipo (successo, errore o avviso). Ecco il codice per farlo (e vi dovrebbe essere familiare):

Si noti qui che stiamo usando gran parte del codice dell'esercitazione precedente; Tuttavia, noi lo abbiamo generalizzato in maniera tale che esamini l'incoming $type e lo applichi dinamicamente al markup.

Questo ci permette di avere una sola funzione per il rendering dei nostri messaggi. Questo però non è tutto. Riguardo le volte che vogliamo ottenere tutti i messaggi? È possibile eseguire il rendering in una pagina o salvarli a livello di codice per qualche altra elaborazione.

Per effettuare questa operazione, introduciamo un'altra funzione:

Questo messaggio dovrebbe essere abbastanza facile da capire. Semplicemente scorre tutti i messaggi che abbiamo nella nostra collezione e chiama la funzione get_messages che abbiamo delineato sopra.

Li restituisce tutti insieme ( vedremo un loro utilizzo nella nostra implementazione di un gancio personalizzato). Se si fossero voluti utilizzare per altri scopi, si sarebbe potuto aggiungere il risultato ad una stringa e restituirlo al chiamante o eseguire alcune altre funzioni a livello di codice.

Questa è solo un'implementazione.

3. Le impostazioni del Messenger

Che lo fa la classe  Settings_Message. Ma, come, possiamo comunicare con essa? Certo, possiamo parlare direttamente ad essa, ma se c'è una classe intermedia, abbiamo un certo controllo su ciò che viene restituito senza bisogno di aggiungere ulteriori responsabilità alla classe Settings_Message, giusto?

Immettere la Settings_Messenger. Questa classe ci permette di leggere e scrivere le impostazioni dei messaggi. Penso che potrebbe essere fatto un caso diviso in due classi di sua responsabilità perché esso si occupa sia di leggere che di scrivere, ma, come un messenger che invia e riceve, che è il proposito di questa classe.

La configurazione iniziale della classe è molto semplice.

  • Il costruttore crea un'istanza della classe Settings_Message che possiamo usare per inviare e ricevere messaggi.
  • Associa un metodo con il nostro gancio personalizzato tutsplus_settings_messages che abbiamo definito in un precedente tutorial.

Date un'occhiata al primo paio di metodi:

Ricordate in precedenza in questo tutorial, avevamo il gancio definito nel nostro punto di vista che può essere trovato in Settings.php. Per completezza, è elencato qui:

Si noti, tuttavia, che questo particolare gancio si avvale del metodo get_all_messages che  esamineremo in un attimo. Non deve utilizzare questo metodo. Al contrario, potrebbe essere utilizzato per il rendering dei messaggi di successo o qualsiasi altro metodo che si desideri utilizzare.

Aggiungere messaggi

Creazione funzioni per aggiungere messaggi è semplice, in quanto queste funzioni richiedono un tipo e il messaggio stesso. Ricordate, Settings_Message si prende cura di sanificare le informazioni così possiamo semplicemente passare ai messaggi in arrivo.

Vediamo qui di seguito dove stiamo aggiungendo i messaggi di successo, di avviso e di errore:

È facile, non è vero?

Ricevere i messaggi

Il recupero dei messaggi non è molto diverso, ma abbiamo bisogno di fornire il tipo di messaggi che si desiderano recuperare:

Tutto fatto, giusto?

Ma avete capito?

Si noti che i messaggi qui sopra si riferiscono soprattutto agli altri due altri metodi di cui non ci siamo ancora occupati. Questi sono i messaggi privati che ci aiutano a semplificare le chiamate.

I seguenti metodi privati sono entrambi responsabili per l'aggiunta e il recupero dei messaggi direttamente dall'istanza Settings_Message mantenuta dall'oggetto messenger:

E questa avvolge la nuova classe Settings_Messenger. Tutto questo è molto più semplice, non è vero?

Iniziamo il Plugin

Ecco un dubbio, però: come possiamo iniziare il plugin ora che abbiamo fatto tutti questi cambiamenti?

Vediamo l'intera funzione qui sotto:

E questo è tutto.

Alcuni punti da considerare:

  • Se non si chiama init sul Settings_Messenger,  non ci si deve preoccupare per la mancata visualizzazione del messaggio nella pagina delle impostazioni.
  • Il codice aggiunge i messaggi a Settings_Messenger, ma non ne recupera alcuno perché sto usando il metodo init.
  • Se volete recuperare i messaggi, è possibile utilizzare i metodi che abbiamo descritto sopra.

Questo è tutto per il refactoring. Questo non funzionerà esattamente perché c'è ancora bisogno di qualche codice necessario a caricare tutti i file PHP indispensabili per ottenere il plugin funzionante; Tuttavia, questo codice si concentra sul refactoring che è l'argomento di questo tutorial.

Conclusione

Per la versione completa funzionante  e il completo codice sorgente che dovrebbe funzionare "out of the box", scaricare il codice sorgente allegato a questo post sulla barra laterale destra.

Spero che durante questo corso con questo materiale raccolto abbiate sviluppato nuove competenze e metodi per affrontare lo sviluppo WordPress. Guardando la serie, abbiamo coperto un sacco di argomenti:

  • menu personalizzati
  • introduzione alle pagine di amministrazione
  • i vari tipi di messaggio
  • definizione e uso degli Hook personalizzati
  • e refactoring di codice di programmazione orientata agli oggetti

Come al solito,  sono sempre felice di rispondere alle domande attraverso i commenti, potete visitare il mio blog e seguirmi su Twitter.  Di solito parlo di sviluppo WordPress e relativi argomenti. Se vi interessa lo sviluppo WordPress, non dimenticate di controllare le mie precedenti serie e tutorial, e l'altro materiale di WordPress che abbiamo qui su Envato Tuts +.

Risorse

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.