Aggiunta di hook personalizzati in WordPress filtri personalizzati

In questa serie in due parti, diamo uno sguardo al sistema di aggancio WordPress. Nello specifico, esaminiamo da vicino sia le azioni che i filtri e il ruolo che svolgono nello sviluppo di WordPress.

Anche se sono entrambi definiti come ganci, ognuno svolge un ruolo specifico nello sviluppo di WordPress. E se stai cercando di diventare uno sviluppatore WordPress più esperto, è importante non solo capire la differenza tra loro, ma anche come implementare gli hook personalizzati,.

Nel primo post della serie, abbiamo definito quali hook erano, abbiamo visto come sono stati utilizzati altrove e abbiamo anche rivisto le azioni incluso come definire le nostre. Se non hai preso il primo articolo, consiglio vivamente di leggerlo prima di procedere con questo tutorial.

Prima di iniziare con i ganci, fornirò un rapido aggiornamento di ciò che è stato discusso nel precedente articolo, quindi passeremo da lì.

Detto questo, iniziamo.

Un aggiornamento rapido

Nel precedente articolo, abbiamo visto come gli hook sono un'implementazione del modello di progettazione basato sugli eventi. In particolare, lo abbiamo definito come segue:

  • Il software ha alcuni punti in cui trasmette un messaggio che qualcosa è successo.
  • Noi, come sviluppatori, siamo in grado di scrivere il codice che ascolta questo messaggio e poi rispondere ad esso con un codice personalizzato.

E poi in tutto il contenuto, abbiamo rivisto esattamente come questo modello è implementato in WordPress. Abbiamo parlato di come possiamo trarne vantaggio, e poi abbiamo parlato di come possiamo implementare la nostra azione.

Abbiamo anche riconosciuto una sottile distinzione: 

Le azioni hanno lo scopo di funzionare con funzionalità e i filtri sono pensati per funzionare con i dati.

Mentre le azioni ci permettono di modificare il modo in cui qualcosa si comporta, i filtri ci permetteranno di modificare i dati prima che vengano salvati, recuperati o visualizzati sullo schermo. In questo tutorial, daremo un'occhiata a come lavorare con i filtri prima di scrivere i dati sullo schermo, come ad esempio la minuscola del testo e rimuovere le vocali dal testo. 

In definitiva, si tratta di provare a divertirti e vedere risultati tangibili attraverso il lavoro che stiamo facendo mentre apprendi tutto su questo potente aspetto di WordPress.

Prima di farlo, dobbiamo assicurarci di avere il nostro ambiente di sviluppo locale pronto e pronto per l'uso.

Iniziare

Ricordiamo dal precedente articolo che il nostro ambiente di sviluppo locale dovrebbe consistere in quanto segue:

  • WordPress 4.5.2
  • il tuo IDE preferito
  • un server web
  • una copia di PHP
  • un database

Per molti, Apache, PHP e MySQL possono essere facilmente installati. Se sei più avanzato, potresti utilizzare qualcosa come Nginx e un database alternativo. Se questo è il caso, va bene, ma per gli scopi di questo tutorial suppongo che tu abbia il primo.

E se non ne hai nessuna, non preoccuparti: ti abbiamo coperto. Il tutorial collegato ti fornirà tutto ciò di cui hai bisogno per iniziare a lavorare con WordPress sul tuo computer locale.

Una volta impostato, saremo pronti a procedere.

Comprendere i filtri WordPress

Il Codice WordPress offre un set completo di risorse per coloro che desiderano apprendere tutto sui filtri. Come abbiamo detto, definisce i filtri come segue:

I filtri personalizzati differiscono dalle azioni personalizzate perché le azioni personalizzate consentono di aggiungere o rimuovere il codice dalle azioni esistenti. Mentre i filtri personalizzati consentono di sostituire dati specifici (come una variabile) trovati in un'azione esistente.

Ma se stai cercando un intero elenco dei filtri disponibili in WordPress, assicurati di fare riferimento (e aggiungere ai preferiti) questa pagina nel Codex. Ha circa 20 secondi di filtri, molti dei quali sono collegati alla propria pagina di documentazione.

Questo significa che se sei curioso di sapere se esiste un filtro specifico, puoi fare riferimento a questa pagina. Allo stesso modo, è possibile visitare la pagina di quel particolare filtro in modo da avere pochi parametri degli argomenti, una definizione di funzione di esempio e come lavorarci.

Una parola su priorità e parametri

Prima di andare oltre, voglio essere sicuro che siamo tutti sulla stessa pagina di quale priorità e il numero di argomenti si riferiscono a quando ne parliamo nel contesto degli hook di WordPress.

Prendi, ad esempio, la seguente riga di codice:

Questo ci dice quattro cose:

  1. il nome del filtro a cui stiamo collegando
  2. il nome della funzione che dovrebbe essere chiamata
  3. la priorità di quando la funzione dovrebbe essere chiamata
  4. quanti parametri deve accettare la funzione

In generale, i primi due punti vengono rapidamente compresi; tuttavia, gli altri due spesso possono far scattare nuovi sviluppatori, ma non è un concetto difficile da capire.

In primo luogo, pensa a priorità come quando la funzione è chiamata. Ricorda, dal momento che un determinato hook può avere più funzioni ad esso associate, la priorità ti consente di definire la modalità con cui chiamare o chiamare la funzione. Più basso è il numero, prima si spara; più alto è il numero, più tardi spara.

Secondo, il numero che indica quanti parametri un argomento assume. Se non si specifica un numero, non accetterà nessuno o qualunque sia l'argomento predefinito. Se vuoi passare un importo diverso da quello atteso, devi specificare quanti parametri deve accettare l'argomento. Vedremo questo più in dettaglio più avanti nel tutorial.

Lavorare con i filtri

Per iniziare a lavorare con i filtri, andiamo avanti e creiamo il nostro file nella radice della directory twentysixteen. Chiameremo il file tutsplus-filters.php. Poi, a ventisettesimi functions.php, aggiungeremo la seguente riga di codice:

Ciò assicurerà che tutto il nostro codice personalizzato risieda in un singolo file che possiamo escludere quando non vogliamo usarlo. Inoltre lo mantiene contenuto nella propria area in modo che non venga elaborato con alcun codice esistente con il tema.

Filtro dei contenuti dei post

Prima di iniziare a definire i nostri filtri personalizzati, è importante capire come funzionano i filtri. Poiché i filtri sono pensati per essere utilizzati per modificare i dati e poiché i post sono uno degli elementi costitutivi di un blog, diamo un'occhiata a come possiamo filtrare il contenuto di un post del blog prima che venga visualizzato sullo schermo.

Quando si lavora con questo esempio, si noti come è simile a come lavoriamo con le azioni di WordPress, ma piuttosto che modificare il comportamento, sta modificando i dati.

1. Registrazione del nostro filtro

Per registrare il nostro filtro, abbiamo bisogno di due informazioni:

  1. il nome del filtro a cui andremo ad agganciare la nostra funzione
  2. una funzione che sarà responsabile del filtraggio dei dati

Poiché stiamo andando a modificare i contenuti dei post, possiamo trarne vantaggio il contenuto filtro. L'essenza della funzione è la seguente:

  • accetta un singolo argomento, il contenuto del post, ci consente di modificarlo e quindi lo restituisce al chiamante

In questo caso, WordPress passa il contenuto del post alla funzione e quindi la funzione restituirà i dati dopo che ha completato il suo lavoro.

Diamo un nome alla nostra funzione personalizzata tutsplus_the_content e quindi registrarlo con WordPress.

Al livello più fondamentale, questo è come dovrebbe apparire la funzione. Certo, non fa molto. Restituisce semplicemente il contenuto che è passato in esso.

2. Modifica del contenuto

Facciamo in modo che questa funzione modifichi leggermente i dati. In particolare, facciamo questo:

  1. assicurati che il post venga visualizzato nella visualizzazione a singolo post
  2. aggiungi un messaggio nella parte superiore del post che spiega che il contenuto del post è stato modificato

Non è l'uso più pratico di un filtro, ma ti darà un'idea di come puoi modificare la funzione.

Ecco come dovrebbe apparire il codice. Presta attenzione anche ai commenti sul codice:

'; $ html. = 'Questo è un messaggio personalizzato creato da una funzione agganciata.'; $ html. = '

'; // Ora anteponilo al contenuto. $ content = $ html. = $ content; restituire $ content;

Se guardi la pagina nella vista indice o nella vista principale del blog, vedrai i post standard che sembrano esattamente come farebbero senza alcuna modifica. Se visiti un singolo post, vedrai apparire una nuova frase nella parte superiore di ogni post. Nello specifico, vedrai:

Questo è un messaggio personalizzato creato da una funzione uncinata.

Ma facciamo qualcosa di un po 'più avanzato. Oltre ad aggiungere un messaggio nella parte superiore del contenuto, rimuoviamo tutte le vocali dal contenuto del post prima di restituirlo a WordPress.

Per fare questo, useremmo il seguente codice:

'; $ html. = 'Questo è un messaggio personalizzato creato da una funzione agganciata.'; $ html. = '

'; // E ora lo antepone al contenuto. $ content = $ html. = $ content; restituire $ content;

Implementa quel codice, salvalo e quindi visita qualsiasi post nella tua installazione di WordPress.

Tecnicamente, la funzione di cui sopra sta facendo due cose, quindi per scrivere un codice più coeso, ti consiglio di suddividere il comportamento in funzioni separate e di chiamarle con la nostra funzione filtrata principale.

Ecco come potrebbe apparire il risultato finale:

'; $ html. = 'Questo è un messaggio personalizzato creato da una funzione agganciata.'; $ html. = '

'; ritorno ($ html, $ contenuto);

Ancora una volta, questa non è un'implementazione incredibilmente pratica o utile di un filtro, ma mostra esattamente ciò che siamo in grado di fare quando impostiamo la nostra funzione.

Definizione dei filtri personalizzati

Tuttavia, è facile sfruttare i filtri pre-esistenti. Come accennato in precedenza, è davvero una semplice questione di chiamata add_filter, specificare il nome del filtro e quindi passare il nome della funzione che vogliamo chiamare per filtrare i dati.

Ma cosa succede se vogliamo creare il nostro filtro personalizzato? Forse vogliamo creare un filtro che minuscoli tutto il testo nel post? O forse vogliamo creare un filtro che rimuova tutte le vocali da un post?

Comprensione di apply_filters

È qui che iniziamo a interessarci apply_filters. Questa particolare funzione è una che accetta due argomenti:

  1. un tag che identifica il nome del hook del filtro
  2. un valore che si riferisce al valore su cui vengono applicati i filtri

Se dovessi guardare un esempio di, per esempio, get_the_content nel core di WordPress, quindi si noterà che passa il valore specificato attraverso the_content_more_link attraverso apply_filters.

E questo è utile per capire, ma come possiamo definire i nostri filtri personalizzati in modo tale che gli altri possano chiamare apply_filters sulla funzionalità che abbiamo sviluppato?

Aggiungere i nostri filtri

Aggiungere i nostri filtri è facile. Abbiamo bisogno di specificare le stesse quattro cose che abbiamo delineato sopra:

  1. il nome del filtro
  2. la funzione che il filtro dovrebbe chiamare
  3. la priorità della funzione
  4. il numero di argomenti che dovrebbe accettare

Iniziamo con un semplice esempio.

Tutto minuscolo

 di assicurarsi che il contenuto dell'intero post sia in minuscolo. 

Per prima cosa, vogliamo definire il filtro con una priorità di 10. Sappiamo che accetterà un singolo argomento, il contenuto, quindi passeremo il numero 1 quando aggiungiamo il nostro filtro:

Successivamente, definiremo un corpo di funzione semplice che utilizza PHP strtolower funzione per minimizzare qualunque valore è stato passato ad esso, e lo restituiremo.

La versione finale del codice sarà simile a questa:

Abbastanza facile da capire, giusto? Diamo un'occhiata a un altro esempio basato su alcune funzionalità che abbiamo già scritto.

Rimuovi tutte le vocali

Per rimuovere le vocali, possiamo usare la stessa funzione che abbiamo già definito; tuttavia, abbiamo bisogno di cambiare il modo in cui il filtro è registrato con WordPress, e quindi dobbiamo assicurarci che la funzione registrata con WordPress risponda correttamente apply_filters.

Poiché abbiamo visto come aggiungere il nostro filtro, specificare una priorità, definire il numero di argomenti che dovrebbe accettare e implementare una funzione, non perderò tempo con dettagli banali. 

Ecco il filtro e viene chiamato tutto da solo:

E quindi questo è come puoi chiamarlo dal gancio iniziale.

Chiamandoli tutti insieme

Finalmente, è possibile chiamare apply_filters più volte:

Si noti che questo raggiunge lo stesso risultato dei casi precedenti, ma lo fa condensandoli in un'unica riga di codice. Ci sono altri modi in cui questo potrebbe essere scritto, ma lo scopo di questo tutorial è quello di istruirti su come scrivere i propri filtri e come sfruttare apply_filters nel tuo lavoro.

Conclusione

Questo tutorial conclude la nostra introduzione agli hook di WordPress. Durante la serie, abbiamo esaminato come sfruttare le azioni e i filtri esistenti, nonché come creare e implementare i nostri.

Il sistema di aggancio è uno degli aspetti più potenti di WordPress per gli sviluppatori, quindi è importante familiarizzarsi con esso. In tal modo, non solo sei in grado di manipolare comportamenti e dati forniti da WordPress, ma sei in grado di definire i tuoi ganci che altri sviluppatori possono utilizzare nel loro codice.

Sentiti libero di continuare a giocare con il codice sorgente che è stato fornito in entrambe queste esercitazioni.

Infine, se stai cercando altre utilità che ti aiutino a costruire il tuo set crescente di strumenti per WordPress o che il codice studi e diventi più esperto in WordPress, non dimenticare di vedere cosa abbiamo a disposizione nel mercato Envato.

Ricorda, puoi prendere tutti i miei corsi e tutorial nella pagina del mio profilo, e puoi seguirmi sul mio blog e / o Twitter su @tommcfarlin dove parlo di varie pratiche di sviluppo del software e come possiamo impiegarle in WordPress.

Non esitare a lasciare qualsiasi domanda o commento nel feed qui sotto e cercherò di rispondere a ciascuno di essi.

Risorse correlate

  • Il modello di progettazione guidato da eventi
  • WordPress 4.5.2
  • nginx
  • Impostazione di un ambiente di sviluppo locale
  • Il codice WordPress sui filtri
  • L'elenco dei filtri WordPress
  • Il tema Twentysixteen
  • il contenuto
  • apply_filters