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

Aggiungere hook (ganci) personalizzati in Wordpress: le azioni personalizzate

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Adding Custom Hooks in WordPress.
Adding Custom Hooks in WordPress: Custom Filters

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

Uno dei capisaldi per la costruzione di soluzioni personalizzate in Wordpress è costituita dalla comprensione degli hook. Non sono troppo difficili da capire ed è bene conoscerli se si vuole approfondire lo sviluppo di Wordpress, ne vedremo una breve introduzione in questo tutorial.

Se stai cercando di approfondire la tua conoscenza dello sviluppo Wordpress è bene sapere come implementare i propri hook.

In questa serie in due parti, conosceremo il sistema degli hook di Wordpress e come implementarlo, e daremo uno sguardo su come definire le proprie azioni e filtri.

Iniziamo

Prima di cominciare, questo tutorial presuppone che tu abbia un ambiente di sviluppo in locale predisposto con l'ultima versione di Wordpress. Nel momento in cui stiamo scrivendo, è Wordpress 4.2.5.

Se hai bisogno di una guida su come configurare il tuo ambiente di sviluppo puoi guardare questo tutorial. Trovarai tutte le info su come impostare un web server, una copia di php, un database e Wordpress.

Se hai bisogno di ulteriori informazioni nella serie in cui è compreso trovi anche tutte le indicazioni su come installare Wordpress, procedure dettagliate su temi, plugin e quant'altro.

Ma in questo tutorial ci concentriamo invece su hook e azioni. Quindi, se è tutto pronto, cominciamo!

Cosa sono gli hook?

Prima di dare un'occhiata da vicino agli hook di Wordpress vale la pena di capire prima il modello di progettazione ad eventi (event-driven), chiamato anche architettura event-driven.

Se hai già lavorato con hook esistenti di Wordpress, fatto sviluppo front-end o conosci JavaScript è molto probabile che tu abbia già familiarità con questo modello, anche se magari non ne conoscevi il nome ufficiale.

Indipendentemente da questo, vediamo come viene definito da Wikipedia:

L'architettura ad eventi, nota anche come architettura a messaggi, è un modello di architettura software che promuove la produzione, rilevazione e la reazione ad eventi.

Se sei all'inizio con i modelli di progettazione e sviluppo potrebbe sembrare complicato, un'altra maniera di definirlo potrebbe essere:

  • Il software in alcuni specifici punti trasmette un messaggio, comunica che è successo qualcosa
  • Noi, come sviluppatori, siamo in grado di scrivere un codice che intercetta questo messaggio e risponde con un codice personalizzato.

Notare come la definizione parli di produzione di eventi.  Quando entreremo più nel dettaglio su come definire i nostri hook torneremo sull'argomento. Per ora vediamo due esempi di eventi comuni nello sviluppo web.

Usando JavaScript

Immagina di stare lavorando nello sviluppo front-end. Abbiamo un bottone con un ID di attributo command-button e quando l'utente ci clicca sopra, vogliamo che appaia una finestra di dialogo.

Usando jQuery puoi facilmente implementare questa funzionalità così:

Il commento in cima al codice ci spiega esattamente che cosa succede. In breve, il browser lancia un evento quando un utente clicca un bottone Quando questo succede, il nostro codice ascolta l'evento e risponde aprendo una finestra di dialogo.

Naturalmente anche altre librerie, frameworks e anche JavaScript permettono la stessa funzionalità. Vediamo in questo esempio jQuery perché è una delle librerie più comuni, oltre che quella implementata da Wordpress.

Usando Wordpress

L'implementazione di questo modello non necessariamente si assomiglia da linguggio a linguaggio. Questo dipende piuttosto dalle APIs che il framework, foundation o applicazione utilizza.

In Wodpress registrare un codice che lancia un evento risulta essere abbastanza diverso. Per esempio, immagina di stare lavorando con l'amministrazione delle pagine di Wordpress e che vogliamo aggiungere un nuovo sotto-menù dentro il menù Impostazioni. Chiameremo questo Tuts+ Options.

Per fare questo, aggiungiamo il seguente codice al nostro file functions.php o al nostro plugin o a qualunque sia il tipo di progetto su cui ci stiamo concentrando:

Puoi visitare il Codex per leggere di più riguardo le funzioni admin_menuadd_submenu_page 

Questo codice non aggiunge alcuna funzionalità al menù, ma serve per dimostrare che Wordpress istituisce un evento admin_menu, esattamente come un browser istituisce un evento click.  Ora siamo in grado di inserire il nostro codice definendo una funzione e sarà richiamato ogni volta che l'evento viene generato.

Questi sono due esempi pratici di modello event-driven che possono essere implementati ed usati.

Capire le azioni di Wordpress.

Ora che abbiamo visto una breve introduzione sul modello di progettazione event-driven e visto due implementazioni di questo modello diamo un'occhiata nello specifico alle azioni di Wordpress. Esamineremo cosa è disponibile e come possiamo implementare il nostro.

Impostiamo il File

Per i propositi di questo tutorial utilizzeremo il tema di deafault twentysixteen fornito con l'installazione di Wordpress.

Nella radice della cartella del tema creiamo un file chiamato tutsplus-action.php.  Poi, nel functions.php aggiungiamo questa riga di codice:

Questa dice al tema di caricare il file che abbiamo definito.  Facciamo questa operazione per mantenere il codice fuori dal nucleo del tema in maniera tale da poter facilmente rimuoverlo cancellando il codice include_once.

Una breve definizione delle azioni.

In Wordpress gli hook rientrano in due categorie: azioni o filtri. Le azioni sono dei punti del ciclo vitale di Wordpress che consentono di aggiungere, rimuovere o modificare alcune funzionalità. I filtri sono dei punti del ciclo vitale di Wordpress che consentono di aggiungere, rimuovere o modificare dati.

In breve le azioni servono per lavorare con le funzionalità, i filtri con i dati.  Ci concentreremo sui filtri nella seconda parte di questa serie.

Una cosa che voglio sottolineare è che se si cercano azioni e filtri dopo aver letto questo tutorial (cosa che incoraggio di fare) si possono trovare entrambi definiti in generale come hook.

Anche se questo è tecnicamente corretto, è più pragmatico definire il tipo di hook su cui si sta lavorando di volta in volta quando discutiamo o presentiamo l'argomento con qualcun altro.

Questo perché le azioni sono destinate a permettere un certo tipo di funzionalità e i filtri sono destinati a permettere un altro tipo di funzionalità.

Lavorare con le Azioni

Anche se abbiamo già esaminato un esempio specifico di azione nel codice qui sopra vediamo ora un esempio più completo e pratico.

Solitamente Wordpress offre due tipi di post: i post (per i post del blog) e le pagine (per contenuti statici che raramente vengono cambiati).  Come piattaforma blog standard queste funzionalità sono più che sufficienti. Ma Wordpress già da qualche anno è maturato come CMS.

E una delle caratteristiche che rende Wordpress estendibile è la possibilità di creare post personalizzati. Wordpress li chiama custom post types, e sono grandiosi quando abbiamo bisogno di creare un tipo di contenuti che necessitano attributi propri e hanno bisogno di essere più specifici rispetto ai "post" e alle "pagine".

Per creare un custom post type dobbiamo fare due cose:

  1. definire una funzione che si agganci al hook init fornito da Wordpress
  2. definire il nostro custom post type con con una delle funzioni API fornite.

Registriamo la nostra Azione

Per registrare la nostra azione usiamo la funzione add_action fornita dalle API di Wordpress.  Questo codice dice ad Wordpress che stiamo inserendo un'azione e che deve lanciare la funzione definita con quel nome che abbiamo messo nella chiamata dell'azione.

Il nostro codice dovrebbe essere simile a questo:

Nel codice precedente, registriamo una funzione attraverso l'hook init che esiste in Wordpress. Questo hook viene lanciato all'inizio del ciclo vitale di WordPress ed è il momento in cui registriamo il custom post type.

Quindi abbiamo bisogno di definire la funzione.

La chiave per comprendere la firma di questa funzione è semplice: l'abbiamo chiamata tutsplus_register_post_type che è il secondo argomento che abbiamo passato nella chiamata add_action.

Questo letteralmente significa: Durante init fai una chiamata alla funzione tutsplus_register_post_type.

Fin qui tutto bene. Non abbiamo visto niente di così complicato, e se si aggiorna la schermata di Wordpress si vedrà che sta ancora funzionando e che non è successo nulla di nuovo. 

Ora cambiamo questo.

Creiamo un Custom Post Type

Ora che abbiamo lo scheletro del codice per aggiungere la nostra azione facciamo succedere qualcosa. Nello specifico andiamo a creare un post personalizzato chiamato time_traveler che include un titolo, un editor, una sintesi e nient'altro.

Per fare questo dobbiamo rivedere dal Codex la funzione register_post_type.  La documentazione fornisce una solida spiegazione di tutti gli argomenti che la funzione può accettare, ma ora ne stiamo andando a utilizzare solo un sottoinsieme per il nostro custom post type.

In particolare, stiamo andando ad utilizzare i seguenti:

  • label
  • labels
  • description
  • public
  • show_ui
  • supports

Per gli altri argomenti teniamo i valori di default di WordPress. Gli argomenti saranno simili a questo:

E la versione finale completa del codice per la registrazione del custom post type sarà simile a questo:

Quando aggiorniamo l'amministrazione di Wordpress dovrebbe apparire ora una nuova voce di menù, direttamente sotto i Commenti, chiamata Time Travelers

Cliccando su Aggiungi Nuovo si dovrebbero vedere lo spazio per il titolo (o il nome del viaggiatore), l'editor (per le informazioni sul viaggiatore) e una sintesi (per alcune note sul viaggiatore).  Si dovrebbe anche vedere una casella per la pubblicazione delle informazioni.

Adding a Time Traveler custom post type

Naturalmente il codice sopra ci mostra come trarre vantaggio dalla creazione di un post personalizzato. Ma cosa succede se vogliamo creare le nostre azioni?

Definire le Azioni Personalizzate

Quando vogliamo creare le nostre azioni dobbiamo fare 3 cose. A livello essenziale, abbiamo bisogno di effettuare le seguenti operazioni:

  1. definire l'hook
  2. dare funzionalità al hook
  3. permettere agli sviluppatori di chiamare il hook

L'esempio più semplice per illustrare questo è il codice riportato di seguito:

Sentitevi liberi di aggiungere codice a tutsplus-actions.php, in modo tale da modificare ed esplorare il codice dopo questo tutorial.

Dopodiché, possiamo chiamare la funzione tutsplus_action  ovunque nel nostro codice. Diciamo, per esempio, che vogliamo visualizzarla nella parte superiore del pannello di amministrazione. Se questo è questo che vogliamo fare, dobbiamo aggiungere il seguente codice:

Aggiornando la dashboard, vedremo la scritta "This is a custom action hook" visualizzata nella parte superiore.

Io non consiglio di agganciarlo in admin_notice, a meno che non si voglia notificare all'utente un avviso, un warning o un messaggio di errore.  Lo sto usando qua solo per dimostrare la funzione di hook personalizzato.

Rivediamo il custom post type

Diciamo che vogliamo creare una funzione per il custom post type che permetta di passare il nome singolare e plurale all'interno di una funzione attraverso l'uso di un'azione.

Cosa dobbiamo fare? Usando tutto quello che abbiamo visto in precedenza sappiamo che la prima cosa che dobbiamo fare è creare una funzione personalizzata che chiamerà un'azione. Quindi cerchiamo di farlo ora:

Quindi abbiamo bisogno di fare qualcosa che potrebbe sembrare controintuitivo.   Dal momento che vogliamo che la funzionalità personalizzata sia lanciata nel contesto del hook init dobbiamo fare in modo che il nostro hook sia lanciato durante l'azione init.

Per fare quato abbiamo colleghiamo il hook personalizzato al hook init.

Notare come nel codice qui sopra stiamo specificando due parametri aggiuntivi per do_action Il primo parametro è 10 ed indica la priorità con la quale il hook scatterà. 

Questo può essere qualsiasi numero, maggiore è il numero più in basso sarà nella lista delle priorità. Il secondo parametro è quanti argomenti accetta l'hook personalizzato. Nel nostro caso, ne abbiamo uno per la versione singolare e uno per la versione plurale.

Dopodiché abbiamo bisogno di dare funzionalità al hook.   Faremo in modo che il codice per la registrazione del custom post type accetti due argomenti, e questi saranno passati nella stringa della funzione register_post_tipe di Wordpress.

Notare come in questa funzione abbiamo rimosso la possibilità che venga aggiunta ad un particolare hook. La richiameremo invece dalla funzione che è agganciata alla nostra azione personalizzata.

Nel codice precedente, siamo in grado di effettuare una chiamata alla funzione responsabile della registrazione del custom post type, e di passarlo nelle argomentazioni per aggiungere un po' di funzionalità al codice.

Conclusioni

Definire gli hook personalizzati non è complicato e offre a noi sviluppatori potenza e flessibilità. Probabilmente la cosa che desta più confusione nel codice di questo esempio è che stiamo definendo un hook nel contesto di un altro hook, (vale a dire che stiamo definendo tutsplus_register_custom_post_tupe all'interno di init).

Ho scelto di usare questo come ultimo esempio perché ci sono volte in cui è meglio registrare un hook personalizzato e questo ha bisogno di essere lanciato prima che che un hook pre-esistente sia completato.

Registrare un hook da solo è facile. Semplicemente basta non collegarlo ad un gancio preesitente, come abbiamo visto nel caso di admin_notices.

Nel prossimo post daremo uno sguardo ai filtri e vedremo come ci possono essere utili in termini di modifica dei dati. Vedremo anche come definire i filtri in modo che siano in grado di introdurre funzionalità personalizzate come abbiamo visto in questo tutorial.

Fino a quando il prossimo articolo non sarà pubblicato, se state cercando altre utility per aiutarvi a costruire il vostro crescente set di strumenti per WordPress, o per trovare codice da studiare per approfondire WordPress, non dimenticate di vedere ciò che abbiamo disponibile nel mercato di Envato.

Ricordo che è possibile vedere tutti i miei corsi e tutorial sulla pagina del mio profilo e mi puoi seguire sul mio blog e/o Twitter @tommcfarlin  dove parlo di varie pratiche di sviluppo software utilizzabili in Wordpress.

Non esitate a lasciare commendi o domande nel box qui sotto, risponderò a ciascuno.

Related Resources

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.