WordPress per lo sviluppo di app Web eventi, azioni e filtri

In questa serie, abbiamo dato un'occhiata a come WordPress può essere utilizzato per creare applicazioni web.

Fino a questo punto, abbiamo stabilito che WordPress è un fondamento - piuttosto che un framework - e abbiamo parlato un po 'di come dobbiamo evitare di provare a calzare WordPress in un altro tipo di modello di progettazione rispetto a quello del suo tipo nativo.

A tal fine, abbiamo stabilito che WordPress utilizza un modello di progettazione basato sugli eventi e che questo è rappresentato al meglio con il suo sistema di azioni e filtri.

Sebbene lo scopo generale di questa serie sia quello di fornire un sondaggio su come utilizzare WordPress per lo sviluppo di applicazioni web, penso che sia importante dare un'occhiata ad alcuni esempi pratici di quanto sia potente il sistema di aggancio per capire come molto noi - come sviluppatori - possiamo personalizzare WordPress in base alle nostre esigenze.

Quindi, in questo articolo, daremo un'occhiata ad un codice che rappresenta alcune azioni comuni che possono essere raggiunte usando gli hook di WordPress, così come alcune funzionalità leggermente non standard.

In definitiva, alla fine dell'articolo, dovresti avere una chiara comprensione del perché sfruttare la natura guidata da eventi di WordPress è fondamentale per la creazione di applicazioni e perché non dovremmo provare a rendere WordPress e i suoi modelli sottostanti in qualcosa che sono non.


Ganci: azioni e filtri

Nell'articolo precedente, abbiamo fornito due definizioni: una specifica per le azioni e una specifica per gli hook:

Le azioni sono eventi nel ciclo di vita della pagina di WordPress quando si verificano determinati eventi: determinate risorse sono caricate, alcune strutture sono disponibili e, a seconda di come si è verificata l'azione, alcune cose devono ancora essere caricate.

I filtri sono funzioni che WordPress trasmette i dati durante determinati punti del ciclo di vita della pagina. Sono i principali responsabili dell'intercettazione, della gestione e della restituzione dei dati prima di inviarli al browser o di salvare i dati dal browser al database.

Questo è fondamentale per comprendere i due tipi di eventi di WordPress perché ci saranno dei momenti in cui si desidera anticipare un processo, seguire un processo o manipolare le informazioni prima di renderle sullo schermo.

Conoscere la differenza di azioni e filtri è fondamentale per creare applicazioni, plug-in e temi in WordPress.

A tal fine, metteremo in pausa la discussione perché WordPress può essere utilizzato per le applicazioni Web e dare un'occhiata pratica a diverse azioni e filtri per assicurarsi che tutti noi capiamo come funziona il sistema degli eventi, i tipi di cose che possiamo fare con esso, e speriamo che la creatività scorra da come questi possono essere utilizzati per creare un'esperienza più personalizzata.

Azioni comuni

In primo luogo, daremo un'occhiata a diverse azioni ognuna delle quali aumenta in complessità rispetto a quella precedente per aiutare a dimostrare come potenti azioni possono diventare.

1. Aggiunta di un file JavaScript all'intestazione

Questa azione è così comune che è probabile che rote anche tra gli sviluppatori più intermedi. Tuttavia, il punto rimane: questo è un esempio di una classica azione WordPress che viene utilizzata in quasi ogni tipo di tema che è là fuori.

In breve, sfrutta il wp_enqueue_scripts gancio. Questo si attiva durante la sequenza di caricamento della pagina e consente di dire a WordPress quali file di origine deve includere e dove dovrebbe includerlo (come in, nell'intestazione o nel piè di pagina).

function example_add_theme_scripts () wp_enqueue_script ('re-example-script', get_stylesheet_directory_uri (). '/js/example.js', array ('jquery'), '1.0.0', FALSE);  add_action ('wp_enqueue_scripts', 're_add_theme_scripts');

Questo è abbastanza facile da capire, giusto?

Prendi lo script nel tema example.js file dalla directory JavaScript, assicurati che sia contrassegnato come dipendente da jQuery che viene caricato per primo, nota che è la versione 1.0.0 dello script, e facciamo non vuoi caricarlo nel footer.

2. Personalizza il Leggi di più collegamento

WordPress offre la possibilità di aggiungere un collegamento "Leggi altro ..." o "Continua a leggere ..." che si ottiene utilizzando il tag nell'editor di post.

Puoi modellarlo usando gli stili nativi, ma diciamo che vuoi aggiungere del codice aggiuntivo che lo renda più adatto al tema, sia più facile da integrare con un design reattivo, o qualcosa di simile.

È quindi possibile utilizzare la seguente azione:

function example_add_more_link_class ($ link, $ text) $ html = '
'; $ html. = '
'. $ link. '
'; $ html. = '
'; return $ html; add_action ('the_content_more_link', 'example_add_more_link_class', 10, 2);

Si noti che ci stiamo collegando the_content_more_link che accetta l'ancora e il testo dell'ancora per il collegamento più.

All'interno della funzione, quindi, avvolgeremo il collegamento reale all'interno del proprio div contenitore in modo da poter avere un maggiore controllo sullo stile del collegamento.

3. Recupera il nome di una persona tramite Ajax

Questo esempio particolare presuppone che tu stia utilizzando Ajax nel tuo progetto e che hai già configurato le strutture appropriate per assicurarti di poter effettuare richieste asincrone.

Ciò presuppone anche che i dati che vengono inviati dal lato client al lato server sia l'ID di un utente per il quale si desidera restituire il proprio nome.

function example_get_user_name () $ user = null; if (isset ($ _GET ['user_id']) && 0 < strlen( trim( $_GET['user_id'] ) ) )  $user = get_user_by( 'id', $_GET['user_id'] ); if ( FALSE == $user )  echo $user->nome di battesimo;  else echo '-1';  // end if die;  // end re_get_employee_by_name add_action ('wp_ajax_example_get_user_name', 'example_get_user_name'); add_action ('wp_ajax_nopriv_example_get_user_name', 'example_get_user_name');

Quindi nell'esempio sopra, prima controlliamo per accertarci che ID utente è impostato nel $ _GET raccolta, e, in tal caso, tenterà di recuperare l'utente da tale ID.

Se l'utente esiste, allora farà eco al primo nome dell'utente al client; altrimenti, farà eco a '-1'. Questo ci dà la flessibilità di rispondere in modo appropriato sul lato client.

Filtri comuni

Proprio come abbiamo fatto con le azioni di cui sopra, daremo un'occhiata a diversi filtri ognuno dei quali aumenterà leggermente di complessità in modo che possiamo vedere alcune delle cose che siamo in grado di fare con i filtri che ci concedono maggiore flessibilità all'interno dei nostri progetti WordPress.

1. Aggiunta di contenuti a un singolo post

Anche se il titolo di questa particolare azione dovrebbe essere abbastanza chiaro, diciamo che vuoi aggiungere una frase in fondo a ogni post sul tuo blog, ma tu solo voglio farlo su singoli post.

Questo può essere ottenuto con il seguente codice:

function example_append_post_content ($ content) if (is_single ()) $ html = '
'; $ html. = 'Questo contenuto apparirà alla fine di un post.'; $ html. = '
'; $ content. = $ html; return $ content; add_filter ('the_content', 'example_append_post_content');

Questo è abbastanza facile da capire, giusto?

il contenuto filtro passa il contenuto effettivo del post alla funzione agganciata. Da lì, siamo liberi di manipolare i dati in qualsiasi modo che riteniamo opportuno.

Nel nostro caso, prima controlliamo per vedere se si tratta di una singola pagina. Se è così, allora aggiungeremo un post-suffisso contenitore con una singola frase, aggiungilo al contenuto, quindi restituiscilo.

Se non è un singolo post, il contenuto verrà restituito normalmente.

2. Reindirizzare gli utenti dopo l'accesso

Un altro tipo di filtro che potresti voler sfruttare è il reindirizzamento degli utenti dopo aver effettuato l'accesso all'applicazione.

Ad esempio, forse se sono un amministratore, dovrebbero essere indirizzati al dashboard dei post; in caso contrario, dovrebbero essere reindirizzati alla home page del sito.

Per raggiungere questo obiettivo, possiamo sfruttare il filtro login_redirect:

function example_login_redirect ($ redirect_to, $ request, $ user) return (isset ($ user-> ruoli) && is_array ($ user-> ruoli) && in_array ('amministratore', $ utente-> ruoli))? home_url ('/ wp-admin /'): home_url ();  // end soi_login_redirect add_filter ('login_redirect', 'example_login_redirect', 10, 3);

Nel codice sopra, abbiamo fornito un filtro personalizzato nel login_redirect gancio che esegue quanto segue:

  • Se l'utente è un amministratore, reindirizzalo alla dashboard
  • Altrimenti, indirizzali al HOME_URL del sito.

Abbastanza facile.

Sebbene sia un esempio relativamente semplice, dovrebbe farti pensare a più cose avanzate che puoi fare in base ai ruoli e / o alle capacità dell'utente.

Ad esempio, anziché limitarti a reindirizzarli verso determinati aspetti dell'applicazione, sarai in grado di mostrare loro varie informazioni basate su, ad esempio, i loro ruoli.

3. Personalizzazione delle e-mail

Questo particolare esempio è un po 'più complicato perché il add_filter le chiamate arrivano nel contesto di un'altra funzione che ha un chiamante di terze parti.

In particolare, invieremo un'email, ma vogliamo essere sicuri di aver personalizzato il tipo di contenuto, il contenuto da e il nome da prima di inviare il contenuto.

Per fare ciò, dobbiamo prima definire una funzione:

function example_exmail_user ($ input) // Codice rimosso dalla brevità. // Supponiamo che $ message sia definito come il contenuto dell'email add_filter ('wp_mail_content_type', create_function (", 'return" text / html ";')); add_filter ('wp_mail_from', 'example_mail_from'); add_filter ('wp_mail_from_name ',' example_mail_from_name '); if (wp_mail ($ input [' indirizzo email '],' Il tuo account è stato creato! ', $ message)) // Reindirizza a casa wp_redirect (home_url ()); else  // Specifica una pagina a cui indirizzare su un errore exit; function esempio_mail_from ($ email) return '[email protected]'; function example_mail_from_name ($ name) return 'Example Web App';

Dopodiché, dobbiamo definire le funzioni che sono agganciate al filtro che sono state specificate sopra. Vale a dire ...

  • wp_mail_content_type
  • wp_mail_from
  • wp_mail_from_name

Come puoi vedere, i filtri possono essere complicati in tempi relativamente brevi, ma lo sono potente e se capisci cosa stai facendo e come tutti i pezzi si incastrano, per così dire, allora puoi davvero fare cose incredibili.


Basta sfiorare la superficie

Come con la maggior parte delle esercitazioni ed esempi su questo sito, stiamo solo grattando la superficie di ciò che può essere fatto usando il sistema di aggancio WordPress.

Ovviamente, questi esempi sono pensati per essere proprio questo: esempi di come potenti azioni e filtri possono essere quando si tratta di personalizzare l'esperienza di WordPress.

Sebbene questo particolare articolo e il codice di esempio siano pensati per servire da esempio pratico di alcune delle cose che puoi fare, non sono pensati per essere la guida definitiva per lavorare con gli hook.

Invece, hanno lo scopo di mostrare come possiamo iniziare a sfruttare i vantaggi dell'API di WordPress durante la creazione di un'applicazione web.


Avanti il ​​prossimo…

Nel prossimo articolo, inizieremo a esaminare diversi servizi forniti da WordPress fin dal primo momento. Vedremo come sono utili nella creazione di applicazioni Web, come sfruttarle per il nostro lavoro specifico e come possono essere utili nella creazione di applicazioni Web.

Dopodiché, daremo un'occhiata a quante di queste funzioni funzionano bene nel contesto di un'applicazione web e come possiamo usare gli hook per personalizzare ulteriormente il comportamento che forniscono.