Hook di WordPress: Guida per principianti all’aggiunta di hook personali

Hook di WordPress: Guida per principianti all’aggiunta di hook personali

Hook di WordPress: Guida per principianti all’aggiunta di hook personali
СОДЕРЖАНИЕ
02 июня 2020

I plugin lo sono il modo per estendere WordPress. Il motivo per cui è così facile far fare WordPress alle tue offerte ha a che fare con ganci che sono disseminati nel codice sorgente.


Vuoi fare qualcosa non appena viene pubblicato un post? Vuoi modificare la lunghezza dell’estratto? Vuoi creare le tue statistiche di visualizzazione della pagina? Trovare il gancio giusto è tutto ciò che devi fare.

Ma che dire di fare lo stesso con i plugin? Gli hook non sono solo per l’uso in WordPress, sono essenzialmente un modello di progettazione che puoi implementare nel tuo lavoro.

In questo articolo, ti mostrerò come puoi creare i tuoi ganci per rendere più semplice per te o per gli altri costruire sul tuo lavoro.

Perché abbiamo bisogno di ganci

Per mostrarti quanto possono essere fantastici ganci, diamo un’occhiata ad un esempio dal mondo reale: Campi personalizzati avanzati. Questo plugin consente di aggiungere campi di dati personalizzati flessibili ai post; stiamo parlando di Google Maps, campi numerici, scelta multipla e altro ancora.

Tutto ciò avviene tramite una bella interfaccia utente, tutto ciò che devi fare è utilizzare funzioni come get_field () o the_field () sul front-end. Fin qui tutto bene.

Supponiamo che stai costruendo uno strumento che consente alle persone di vendere oggetti, offrendo un campo per il prezzo e uno per la valuta. Internamente, tuttavia, si desidera sempre memorizzare i prezzi in dollari, indipendentemente dalla valuta in cui l’utente sceglie di visualizzare.

Se ACF (Advanced Custom Fields) non ha alcun hook, questo sarebbe difficile da fare, potrebbe essere necessario utilizzare un meccanismo al di fuori di ACF per salvare questo campo. Fortunatamente, siamo coperti dal ACF / save_post azione. È possibile utilizzare questa azione per modificare i dati $ _POST prima che vengano salvati, un momento perfetto per convertire il prezzo in dollari.

Questo è un esempio molto pratico di ganci, ma c’è un’altra ragione: impermeabilità ed estensibilità future. Gli hook sono un po ‘come un’API, ti danno la direzione; un quadro per così dire. Se stai salvando dati importanti, dovresti creare automaticamente un hook in modo che altri possano manipolarli se necessario. Se stai visualizzando qualcosa di critico per la tua applicazione, ad esempio immagini, usa un filtro che consente agli usi di definire il numero di immagini mostrate.

Come funzionano internamente gli hook

Per creare i nostri hook, faremo esattamente ciò che WordPress fa internamente: utilizzare le funzioni do_action () e apply_filters () per eseguire tutte le funzioni hook. Passiamo al codice sorgente di WordPress per vedere come funzionano.

WordPress utilizza internamente la funzione wp_trim_excerpt () per creare un estratto. In WordPress 4.1 questa funzione è definita in wp-Includes / formatting.php, a partire dalla riga 2542. Se rivolgi la tua attenzione alla riga 2560, dovresti vedere quanto segue:

$ excerpt_length = apply_filters (‘excerpt_length’, 55);

Ciò significa che: Esegui ogni funzione agganciata agli hook excerpt_length e restituisci il valore finale. Supponiamo che tu usi 3 plugin che modificano la lunghezza dell’estratto, cosa succede allora? Raccogliamo queste funzioni in un unico posto e diamo un’occhiata:

add_filter (‘excerpt_length’, ‘plugin_a_excerpt_modify’, 20);
plugin_a_excerpt_modify ($ lunghezza) {
ritorna $ lunghezza – 10;
}

add_filter (‘excerpt_length’, ‘plugin_b_excerpt_modify’, 32);
plugin_b_excerpt_modify ($ lunghezza) {
ritorno 104;
}

add_filter (‘excerpt_length’, ‘plugin_c_excerpt_modify’, 16);
plugin_c_excerpt_modify ($ lunghezza) {
ritorno 20;
}

Alla fine, la lunghezza del brano sarà lunga 104 parole. I filtri vengono eseguiti nel loro ordine di priorità. Pertanto, la funzione del plugin C viene eseguita per prima. Se non fosse stata collegata alcuna altra funzione, la lunghezza ora sarebbe di 20 parole. Successivamente, inizia il plug-in A e la lunghezza diventa 10. Infine, il plug-in B pesa, realizzando la lunghezza 104.

do_action () utilizza esattamente lo stesso meccanismo, eseguendo tutte le funzioni legate all’hook definito come primo parametro.

Si noti che questo modello è completamente racchiuso, non si basa su definizioni speciali. Puoi usare do_action (‘lol_hook’) ovunque tu voglia, nel caso peggiore, nessuna funzione è legata a lol_hook. In altre parole, abbiamo già l’infrastruttura per creare i nostri hook!

Creare i nostri ami

Come ho detto sopra, tutto ciò che dobbiamo fare è assicurarci di usare do_action () e / o add_filter e assicurarci di documentalo. In questo modo i programmatori e gli utenti sapranno effettivamente che è lì.

Supponiamo che stiamo creando una galleria delle ultime immagini caricate estratte direttamente dal database, qualcosa del genere:

$ args = array (
‘post_type’ => ‘Allegato’,
‘post_status’ => ‘qualunque’,
‘orderby’ => ‘Data’,
‘ordine’ => ‘DESC’,
‘posts_per_page’ => 10,
‘fields’ => ‘Ids’
);
$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implode (‘,’, $ images). ‘"] ”.’;
echo do_shortcode ($ gallery);

In questo esempio creiamo una query assicurandoci di recuperare solo immagini, ordinate per data e limitate a 10 risultati. Usando il parametro fields mi sono assicurato che fosse restituita una matrice di ID. Ho quindi creato un normale shortcode della galleria WordPress da queste informazioni.

Ci sono due approcci che potresti adottare per aggiungere hook qui. Potresti aggiungerlo semplicemente prima della definizione dell’array $ args, in questo modo:

$ posts_per_page = apply_filters (‘my_gallery / posts_per_page’, 10);

In questo caso, è necessario utilizzare la variabile $ posts_per_page nell’array. Forse una soluzione migliore sarebbe quella di consentire la modifica dell’intero array. Ciò consentirebbe ad altri plug-in (o tu, in futuro) di aggiungere categoria, tag e altre restrizioni nelle gallerie – ecco il codice completo:

$ args = array (
‘post_type’ => ‘Allegato’,
‘post_status’ => ‘qualunque’,
‘orderby’ => ‘Data’,
‘ordine’ => ‘DESC’,
‘posts_per_page’ => 10,
‘fields’ => ‘Ids’
);

$ args = apply_filters (‘my_gallery / query_args’, $ args);

$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implode (‘,’, $ images). ‘"] ”.’;
echo do_shortcode ($ gallery);

Questo è tutto. Altri plug-in ora possono utilizzare l’hook my_gallery / query_args per modificare la funzionalità delle gallerie create.

Una nota sulla denominazione: la barra non è affatto necessaria. Puoi utilizzare “my_plugin_query_args” o qualsiasi altro formato desideri. Preferisco la barra in avanti perché indica chiaramente il plug-in che lo crea e la funzionalità che fornisce.

Conclusione

Gli hook sono estremamente potenti e possono essere utilizzati non solo per estendere WordPress, ma per estendere i propri plugin o anche temi. Dovresti fare attenzione a non esagerare e aggiungere ganci in ogni angolo della tua applicazione.

Invece di aggiungere un hook all’ordine, post status, post_type e posts_per_page separatamente, ho aggiunto un filtro che può modificare l’intero array contemporaneamente. Altri bit di dati potrebbero non avere senso aggiungere hook, questo dipende da te.

Buona fortuna con la creazione di applicazioni più modulari ed estensibili, facci sapere se hai già usato i tuoi ganci da qualche parte prima!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector