WordPress: implementare la ricerca rapida con AJAX e jQuery

Implementare una funzionalità di quick search (ricerca rapida) utilizzando jQuery e AJAX in WordPress.

AJAX e jQuery ci vengono in aiuto per creare una funzione di quick search da aggiungere al nostro sito in WordPress. Aggiungendo un bottone acccanto a quello di invio del form di ricerca di WordPress diamo la possibilità agli utenti di visualizzare i risultati più significativi della ricerca senza ricaricare la pagina. Vediamo i dettagli dell’implementazione.

La ricerca di base in WordPress è implementata utilizzando la query HTTP GET s unita al termine della ricerca. L’URL di riferimento è l’URL principale del sito. Quindi una query appare come:

WordPress utilizza il file search.php solo per formattare i risultati della ricerca, non per effettuare la ricerca. Bisogna sempre tenere presente questo aspetto per evitare confusioni.

Quello che vogliamo creare è un effetto Lightbox per mostrare la finestra con i risultati della ricerca. Definiamo quindi gli stili CSS:

Inseriremo gli elementi del Lightbox tramite jQuery come figli dell’elemento body seguendo quest’ordine:

Per funzionare al meglio è necessario inoltre che gli elementi html e body abbiano questi stili:

In jQuery organizzeremo il nostro codice in oggetti, definendoli all’interno del namespace di jQuery:

Potete sostituire Test con il nome del namespace del vostro sito. fn è l’oggetto che verrà usato per implementare le azioni principali della libreria:

I primi tre metodi che definiremo servono a creare la struttura del Lightbox, il suo popolamento con i contenuti della ricerca e le azioni necessarie a mostrarlo e nasconderlo:

A questo punto dobbiamo solo aggiungere la funzione di ricerca al bottone inserito nel form:

La risposta AJAX viene gestita come un documento HTML in modo del tutto analogo a quello utilizzato per gestire documenti XML. In pratica la risposta viene gestita come un oggetto DOMDocument da cui estrarre elementi usando il metodo find().

È fondamentale in tal senso studiare la struttura HTML usata nel file search.php, perchè sarà quella la struttura restituita dalla richiesta AJAX.

Il codice viene eseguito tramite il metodo init():

Potete visionare il risultato finale nel video che segue.