Hook di WordPress: la guida essenziale
Pubblicato: 2021-01-26Gli hook di WordPress sono uno strumento utile progettato per gli sviluppatori che realizzano plugin e temi per WordPress. In effetti, sono così utili che i creatori di WordPress li utilizzano in tutto il core di WordPress. Ma cosa sono esattamente gli hook di WordPress e come li usi?
In questa guida, daremo un'occhiata a come utilizzare efficacemente gli hook di WordPress e approfondiremo i fondamenti. Immergiamoci!
Cosa sono gli hook in WordPress?
In poche parole, gli hook di WordPress sono frammenti di codice WordPress che catturano ed eseguono frammenti di altre parti del codice WordPress. Essenzialmente consentono agli sviluppatori di saltare facilmente tra i vari file nei loro temi e plugin.Gli hook di WordPress sono confezionati nel core di WordPress. Anche ogni tema e plugin li utilizza.
Spiegazione degli hook di WordPress
Lo scopo principale degli hook in WordPress è consentire agli sviluppatori di cambiare radicalmente il modo in cui funziona il sistema di gestione dei contenuti senza alterare i file core di WordPress. Perché WordPress è open-source, si potrebbe pasticciare con i file core, ma c'è una possibilità del 99% che ci si pentirà in pochi minuti.
Sebbene possa essere un po' difficile da capire per i nuovi sviluppatori, è assolutamente fondamentale imparare come funzionano gli hook di WordPress. La maggior parte delle volte, sorge confusione a causa della terminologia utilizzata da WordPress. Sebbene l'azione dietro le quinte sia abbastanza simile a quella di molti linguaggi di programmazione, la verbosità è diversa. Spesso è più facile imparare a crearli e utilizzarli seguendo prima gli esempi, leggendoli e poi facendo pratica.
Per scrivere hook di WordPress, devi essere in grado di codificare in PHP. PHP è il linguaggio alla base della stragrande maggioranza di WordPress. Puoi pensare agli hook come aperture a cui possono agganciarsi altre funzioni PHP. Puoi anche pensare agli hook di WordPress come callback che fanno qualcosa sui dati o sulla visualizzazione prima che l'utente veda i dati.

Due tipi di hook di WordPress
Ci sono due tipi principali di hook di WordPress che dovrai imparare:
- Ganci di azione di WordPress
- Ganci del filtro di WordPress
Diamo un'occhiata a questi due tipi di hook di WordPress e come differiscono. Esploreremo anche alcuni esempi di hook di azione e hook di filtro per illustrare meglio il loro utilizzo.
La differenza tra gli hook di azione di WordPress e gli hook di filtro
Se hai passato del tempo a rivedere il codice di WordPress, probabilmente hai visto questi termini gettati casualmente in giro. Sfortunatamente, uno dei punti deboli del codice è che è scritto dagli stessi sviluppatori. Come effetto collaterale, alcune importanti distinzioni che potrebbero essere ovvie per loro, non sono ovvie per coloro che non hanno familiarità con il codice principale di WordPress.
Il modo più semplice per distinguere tra i due tipi di hook di WordPress è che gli hook di azione non restituiscono valori, mentre gli hook di filtro restituiscono valori.Per chi ha familiarità con i linguaggi di programmazione comuni, è come dire che gli hook di azione hanno un tipo di ritorno "void", mentre gli hook di filtro restituiscono dati effettivi.
Gli hook di filtro possono essere pensati come hook o eventi di pre-elaborazione. Un hook di filtro potrebbe filtrare i risultati restituiti da una query di database per contenere solo voci con il cognome di "Smith". Questo hook di filtro dovrebbe essere chiamato prima che venga chiamata l'effettiva query del database, dicendo a WordPress in anticipo che dovrà eliminare i risultati irrilevanti prima di restituirli.
I ction hook di WordPress possono essere pensati come il recupero di qualcosa attraverso il codice. Un esempio comune di action hook è l'inserimento di un file CSS aggiuntivo in una pagina del sito per farlo apparire in modo diverso. Ricorda, gli hook cambiano il modo in cui i dati vengono visualizzati prima ancora che vengano consegnati all'utente. Un action hook fornisce un nuovo file CSS che migliora l'esperienza dell'utente. Questo processo non comporta la modifica del core di WordPress né richiede la modifica della radice web principale del sito. In questo modo, gli hook di WordPress possono rendere molto più semplice, insieme ai plugin, la gestione di più siti WordPress.
Spiegazione di ganci e filtri
Ora che abbiamo esaminato una panoramica più astratta degli hook e dei filtri di WordPress, tuffiamoci nei dettagli più tecnici di come funzionano.
Puoi pensare a un hook di WordPress come a un evento che si verifica con un nome. Un esempio di quello contenuto nel core di WordPress si chiama save_post . Con gli hook, diciamo essenzialmente che quando viene eseguito save_post , vogliamo che il nostro hook o filtro si alleghi ed esegua insieme ad esso.
Alleghiamo i cosiddetti callback, o funzioni di callback, agli hook in WordPress. Questo è solo un modo elegante per dire che stiamo chiedendo a WordPress di eseguire il codice contenuto nelle funzioni che abbiamo creato quando viene generato l'evento che abbiamo "agganciato" (come save_post nel nostro esempio sopra).
Sebbene sia abbastanza facile aggiungere hook di WordPress, come esploreremo in seguito, ricorda che una callback scritta in modo errato può rovinare completamente la tua catena di callback. Se ciò si verifica, un anello interrotto nella catena di callback può rovinare completamente tutto il tuo duro lavoro! Fai sempre un backup prima di apportare modifiche. Approfitta di un affidabile plug-in di backup di WordPress prima di apportare modifiche.
Ti interessano ancora più dettagli tecnici sul funzionamento dei ganci? Dai un'occhiata alla prossima sezione! Abbiamo una spiegazione più approfondita e un tutorial su come creare il tuo primo hook di azione e il tuo primo hook di filtro!
Come funzionano gli hook in WordPress?
Ricorda, sebbene ci siano alcune differenze, gli hook di azione e gli hook di filtro in WordPress possono essere visti come sostanzialmente uguali. Esaminiamo brevemente come funzionano questi ganci. Esamineremo un esempio e un tutorial più avanti nell'articolo.
Entrambi i tipi di hook devono essere registrati con WordPress prima di utilizzarli. Questo fornisce al CMS l'elenco delle funzioni da allegare quando c'è un evento eseguito a cui abbiamo "agganciato" il nostro codice. Inoltre, assicurati che le azioni siano registrate come azioni e che i filtri siano registrati come filtri.
Quando aggiungi un'azione, sfrutta la funzione principale di WordPress add_action() . Quando aggiungi filtri, usa la funzione di base di WordPress corrispondente chiamata add_filter() . Se i tuoi callback (funzionano a monte della catena quando viene eseguito il tuo evento o azione) non restituiscono alcun dato, devi registrarli come azione. Se restituisce ciò che WordPress chiama dati filtrabili, registralo come filtro.
Tutto ciò che specifichi in queste funzioni viene eseguito quando il tuo sito viene aperto da un utente. WordPress ha un generatore interno che mette insieme tutte queste azioni e filtri per noi. Esistono anche funzioni di rimozione corrispondenti per azioni e filtri. Questi possono essere utilizzati per eliminare una funzione dalla catena di callback. Sono spesso contenuti in istruzioni condizionali in WordPress PHP.
Proprio come le nostre funzioni di aggiunta, sono chiamate remove_action() e remove_filter() .
Come posso creare un hook in WordPress?
È finalmente giunto il momento per noi di creare il nostro primo hook in WordPress! Ricorda che la creazione di hook implica l'aggiunta di codice personalizzato che verrà visualizzato e reso agli utenti del nostro sito.
Tieni presente che ogni volta che aggiungiamo codice personalizzato, aggiungiamo un certo livello di rischio per la sicurezza. Ecco perché in questo momento sarebbe il momento ideale per assicurarti di avere un plug-in di sicurezza WordPress di cui ti puoi fidare installato e pronto per l'uso. Questo può aiutare con tranquillità e migliorare qualsiasi potenziale minaccia al tuo sito attraverso un codice personalizzato che potrebbe introdurre nuove vulnerabilità.
Diamo un'occhiata a come possiamo creare un semplice action hook in WordPress. Quindi esamineremo un esempio di hook di filtro nel CMS.
Come posso creare un action hook in WordPress?
Per il nostro esempio di azione, facciamo qualcosa che quasi tutti gli sviluppatori di WordPress dovranno fare a un certo punto: regolare il contenuto nella pagina di accesso di WordPress. La pagina è molto generica.
Ad esempio, se gestisci un sito WordPress per un'istituzione accademica, potrebbero chiederti di ricordare agli studenti di utilizzare l'indirizzo e-mail del loro campus per accedere al loro portale WordPress. Potremmo aggiungere un semplice promemoria sotto le caselle "Nome utente" e "Password" che dice " Ricorda di usare la tua email @myuniversity.edu come nome utente " per ridurre le chiamate al reparto IT che chiedono aiuto per l'accesso.
Questo, ovviamente, sarebbe più allineato con un action hook piuttosto che con un filter hook. Questo perché una semplice regolazione, come la modifica del testo nella pagina di accesso dell'utente principale, in realtà non restituisce alcun dato da filtrare.
Per prima cosa, dovremo capire dove agganciare esattamente la nostra azione. Nella maggior parte dei casi, guardare il file PHP in cui si desidera aggiungere contenuto può essere molto perspicace. Dando un'occhiata al file WordPress contenente il contenuto di accesso, ci sono diversi trigger di azione. Nel nostro esempio del nostro promemoria per gli studenti di utilizzare le loro e-mail istituzionali, noterai il seguente codice piuttosto interessante nel file PHP della pagina di accesso:
do_action('login_footer');
La funzione do_action è una funzione principale di WordPress che esegue il nostro action hook su richiesta. Naturalmente, a condizione che abbiamo registrato tutte le funzioni che vogliamo allegare a questo hook.
In questo caso, "login_footer" è un hook prefabbricato dal team di WordPress. Sebbene sia integrato, possiamo comunque allegare il nostro codice ad esso. Per impostazione predefinita, questo hook carica il contenuto del piè di pagina della pagina di accesso generica. Il piè di pagina sarebbe un posto ideale per il nostro testo, motivo per cui stiamo approfittando di questo hook della sezione della pagina.
Possiamo aggiungere una nuova funzione PHP al nostro wp-login.php per iniziare. Tutto ciò che dobbiamo fare è emettere una riga di testo, in questo modo:
function add_uni_email_reminder() { <p>Ricorda di usare la tua email @myuniversity.edu come nome utente!< /p> } do_action( 'login_footer', 'add_uni_email_reminder' );
In questo caso, abbiamo semplicemente creato una nuova “azione” nel file wp-login.php . Il nome della funzione dell'action hook (add_uni_email_reminder), senza le parentesi del parametro, può essere aggiunto all'elenco di parametri di do_action() per registrarlo in modo che venga eseguito quando il piè di pagina viene visualizzato successivamente.

Come posso creare un hook di filtro in WordPress?
Ora siamo su un rullo! Abbiamo imparato le basi degli hook di WordPress e come sfruttarne la potenza. Abbiamo anche apportato una piccola modifica noi stessi! L'unica parte importante rimasta è fare pratica con i ganci per filtri. Ricorda, questi sono hook che restituiscono alcuni tipi di dati che possiamo filtrare. Questi sono un po' più complessi degli action hook, ma ora che hai compreso le basi degli hook, dovrebbe essere un po' più semplice.
Iniziamo con il nostro hook di filtro WordPress. Per prima cosa, dovremo decidere quale filtro specifico vorremmo aggiungere. Un elemento che il tuo cliente potrebbe richiedere è personalizzare la funzionalità di aggiunta della pagina. Qui è dove gli utenti di WordPress possono aggiungere nuovi post sul blog. Per renderlo il più semplice possibile, diciamo che vogliamo modificare il testo "Inserisci titolo qui" contenuto nella casella di testo "Titolo". Diciamo che vogliamo renderlo più specifico e fargli dire invece "Inserisci il titolo del post sul blog".
Nota che nel nostro esempio di hook del filtro di seguito, la nostra funzione ha un parametro. Inoltre, l'effettiva esecuzione del nostro filtro ha un ulteriore parametro di "priorità". Noterai anche che la funzione effettiva che usiamo per registrare il nostro hook è esattamente la stessa del nostro esempio "action", add_action . Il modo in cui possiamo dire che questa funzione è un hook di filtro piuttosto che un hook di azione è che quando viene effettivamente eseguita, la funzione eseguita come possiamo vedere nel codice principale di WordPress è apply_filters( 'enter_title_here', __( 'Inserisci il titolo qui' ), $post ); . Stiamo applicando filtri come suggerisce fortemente il nome della funzione.
Questo è spesso un punto di partenza per i nuovi utenti. È davvero solo un piccolo problema di formulazione; una volta superato questo, decifrare la differenza tra hook e filtri in WordPress diventa abbastanza semplice! Senza ulteriori indugi, tuffiamoci nel cambiare quel testo segnaposto!
funzione nostro_nuovo_titolo_qui( $titolo ) { $title = __( 'Inserisci il titolo del post sul blog', 'dominio-testo' ); restituisce $titolo; } add_action( 'inserisci_titolo_qui', 'nostro_nuovo_titolo_qui', 10 );
Forse ti starai chiedendo cosa significa quel "10" nella nostra funzione add_action . Si spera che tu capisca i primi due parametri; il primo è l'hook predefinito di WordPress e il secondo è il nome della funzione e del filtro che stiamo allegando a enter_title_here . Il “10” è il livello di priorità che stiamo assegnando a questo filtro.
Ricorda, sia le azioni che i filtri in WordPress sono una serie di "callback" a cascata o funzioni personalizzate che vengono eseguite. A questi vengono assegnati diversi livelli di priorità. Esploreremo cosa significano i diversi numeri, quali sono i parametri accettabili, ecc., un po' più avanti. Tuttavia, è importante capire che 10 è il livello di priorità "normale" predefinito di WordPress per i filtri e le azioni per ora.
Dove sono archiviati gli hook di WordPress?
Ti starai chiedendo dove WordPress potrebbe archiviare tutte queste azioni e filtri. Abbiamo fatto riferimento al core di WordPress, ma questa è semplicemente la posizione delle azioni e dei filtri integrati e delle funzioni ad essi collegate . Gli utenti esperti di WordPress probabilmente sanno che questi hook non sono memorizzati in nessuno dei database creati durante l'installazione di WordPress.
Una delle caratteristiche più singolari delle azioni e dei filtri in WordPress è che non sono realmente "memorizzate" da nessuna parte! Dopo aver aggiunto un'azione o un filtro, è possibile accedere a tale azione o filtro a livello globale attraverso il nostro sito WordPress. Se pensi che non sia possibile che non venga memorizzato da nessuna parte , hai ragione!
Sebbene la struttura sia abbastanza complessa, esiste una variabile PHP in cui sono archiviate tutte le nostre azioni e filtri. Questa variabile è globale e si chiama $wp_filter . Non scherzare direttamente con questa variabile!
Per chi è interessato ai dettagli tecnici, questa variabile $wp_filter è un array PHP. Contiene un'ampia serie di oggetti del tipo WP_HOOK . All'interno del file PHP puoi leggere in wp-includes/class-wp-hook.php , c'è un metodo importante: this->apply_filters() . Questo metodo è ciò che attiva tutti i nostri callback e "registra" i nostri filtri e hook personalizzati. È essenzialmente il pane quotidiano degli hook di WordPress.
Per sfruttare appieno questa fantastica funzionalità di WordPress, avremo bisogno di conoscere alcuni dei più comuni hook di WordPress. Non guardare oltre il nostro cheatsheet qui sotto!
Lista degli Hook di WordPress: Cheatsheet degli Hook di WordPress
Cominciamo con una piccola dose di realismo: non c'è modo di esaminare ogni singolo hook in WordPress. Per fortuna, alcuni ricercatori hanno compilato un elenco di (letteralmente) ogni singola azione e filtro, per coloro che sono curiosi. Puoi vedere un elenco completo di tutti gli hook di WordPress qui, ma fai attenzione agli avvisi di sicurezza relativi a ciascun hook. Non dovresti utilizzare quelli etichettati come "deprecati". Ciò significa che potrebbero o meno essere supportati nella versione più moderna di WordPress, ma in entrambi i casi, presto non saranno supportati.
Con ogni probabilità, il 90% delle volte, sarai interessato solo ad alcuni hook di WordPress. Ecco cinque delle azioni e dei filtri più popolari in WordPress, insieme a una breve spiegazione di cosa sono!
- add_setting() – Proprio come suggerisce il nome, questa azione si aggiunge alle impostazioni di WordPress. Probabilmente non vorrai includere questa azione in nessuna pagina rivolta all'utente, ma può essere un vero toccasana se stai modificando le pagine amministrative.
- apply_filters() – Ti sembra familiare? Dovrebbe, perché l'abbiamo usato prima! Questo chiama immediatamente tutta la nostra catena di callback associata a un hook.
- esc_attr() - Il nome di questo è una scorciatoia per "attributi HTML di fuga". L'escape di HTML significa che utilizziamo codici ASCII per i simboli HTML. Questo è quasi universalmente utilizzato per "igienizzare l'input" alle pagine. In altre parole, questa azione sarebbe altamente desiderabile da collegare a un hook run quando un utente invia un modulo. Impedisce agli utenti di attaccare il tuo sito in particolare con attacchi di scripting tra siti.
- the_content() – Il nome di questo hook probabilmente suona semplice, perché lo è! Cattura semplicemente il contenuto del post attualmente visualizzato. Questo è l'ideale se stai consentendo agli utenti di esportare i contenuti di un post. Ad esempio, alcuni siti offrono agli utenti Premium la possibilità di esportare qualsiasi articolo come file PDF.
- wp_nav_menu() – Abbreviazione di “WordPress Navigation Menu”, questo hook è un hook di azione. Viene utilizzato per visualizzare semplicemente il menu di navigazione principale che crei quando crei per la prima volta il tuo sito WordPress. Questo è ottimo se hai pagine che hanno un layout significativamente diverso e desideri visualizzare il tuo menu in un'area alternativa.
In quale ordine vengono eseguiti gli hook di WordPress? La sequenza di attivazione degli hook di WordPress
Sfortunatamente, l'ordine esatto in cui vengono eseguiti gli hook di WordPress non è così evidente come potresti immaginare. Ciò è dovuto al volume dei ganci. Un ricercatore ha eseguito un'analisi avanzata di questo per contare il numero di hook in esecuzione e l'ordine in cui sono stati eseguiti quando è stata visitata la home page di un sito WordPress.
Come se questo non fosse abbastanza complesso, alcuni hook di WordPress hanno hook collegati con varie priorità! Puoi dare un'occhiata alle centinaia di hook eseguiti e ai loro ordini in questo post sulla sequenza di attivazione degli hook di WordPress. Nota: non dovresti tentare di eseguire questa analisi su nient'altro che su un server di prova in cui puoi permetterti di perdere tutto!
Anche se non possiamo fare molto per l'ordine degli hook predefiniti, possiamo fare qualcosa per l'ordine degli hook che specifichiamo. È qui che entra in gioco la priorità degli hook. Vi abbiamo accennato prima.
Come funziona la priorità negli hook di WordPress?
Come accennato, il livello di priorità predefinito assegnato a un hook da WordPress è "10". Qualunque cosa tu decida di dare la priorità, ricorda che il valore deve essere un numero intero positivo. Ciò significa che, sfortunatamente, "0" non è un valore valido. Inoltre, -100 non sarebbe valido e 0,5 non sarebbe valido. Tuttavia, 1 funzionerebbe, così come 1111.
In generale, minore è il numero intero, minore è la priorità. Se vuoi che un hook venga eseguito dopo un hook a cui hai assegnato il valore predefinito di 10, ad esempio, puoi impostare la sua priorità su 9. Il tuo hook con la priorità più bassa può ricevere un 1. Inoltre, gli hook di WordPress possono essere assegnati allo stesso modo priorità. Questo è se non ti interessa in che ordine corrono.
Riepilogo: Hook in WordPress
Uno dei maggiori ostacoli per i nuovi sviluppatori di WordPress è quanto possano essere non standardizzate gran parte di queste informazioni. Sebbene troverai molti blog tecnici, molti trattano argomenti ristretti e possono essere difficili da aggregare.
Il modo migliore è iniziare a sperimentare gli hook di azione di WordPress e gli hook di filtro sul tuo sito. Dopo aver creato hook di WordPress più complessi, dovrai imparare gli hook che tendi a usare più spesso. Nel tempo, memorizzerai questi ganci. È un processo arduo e nessuno è in grado di memorizzare ognuno di questi ganci.
Il codice WordPress è l'unica migliore risorsa da utilizzare nel tuo viaggio per diventare il prossimo miglior sviluppatore di WordPress al mondo.
Kristen scrive tutorial per aiutare gli utenti di WordPress dal 2011. Di solito puoi trovarla mentre lavora su nuovi articoli per il blog iThemes o sviluppa risorse per #WPprosper. Al di fuori del lavoro, a Kristen piace scrivere nel diario (ha scritto due libri!), fare escursioni e campeggiare, cucinare e avventure quotidiane con la sua famiglia, sperando di vivere una vita più presente.
