Magazine Informatica

Realizzare un form per la ricerca avanzata su WordPress

Creato il 11 dicembre 2013 da Tickettoweb @tickettoweb

Dopo una lunga pausa, ritorno sul blog grazie ad una piacevole esperienza lavorativa che mi ha permesso di farmi le ossa sullo sviluppo di un form per effettuare una ricerca avanzata in un sito realizzato con WordPress.

Il sito in questione aveva bisogno di una banca dati riservata agli utenti registrati (implementata con un apposito custom post type), all'interno del quale poter effettuare delle ricerche con un buon livello di dettaglio.

L'impresa più difficile per questo lavoro è stato cercare come fare una ricerca avanzata su WordPress! Per quanto per me fosse scontato che esistesse un plugin per questo genere di lavoro, ho scoperto che in realtà esistono poche alternative, la maggior parte delle quali in realtà consentono un livello di personalizzazione non proprio soddisfacente.

Ma questa è una storia con un lieto fine, conclusa con questo plugin che, per la mia indole di sviluppatore, reputo straordinario e davvero ben fatto.

Si chiama WP Advanced Search (e con un nome così, non chiedetemi come mai non lo abbia trovato subito!) ed è un plugin un po' atipico, perché non richiede l'installazione classica (va scaricato da GitHub e caricato sulla cartella del proprio tema), sia perché non offre alcuna interfaccia dall'amministrazione di WordPress.

Ma procediamo con ordine.

STEP 1: Installazione

Scaricate WP Advanced Search su GitHub (cliccando sul pulsante Download ZIP in basso a destra), scompattate la cartella sul vostro computer, rinominate la cartella " wp-advanced-search-master" in " wp-advanced-search " e caricatela all'interno della cartella del vostro tema.

Ci siamo quasi! Aprite il file functions.php del vostro tema e in cima aggiungete questa riga:

Ora siamo quasi pronti per realizzare il nostro form!

STEP 2: Aggiungere il form nel nostro tema

Nel file .zip di WP Advanced Search, all'interno della cartella "demo", trovate il file wp-advanced-search-demo.php con un nuovo template di pagina "Advanced Search Demo". Caricatela nella cartella del vostro tema e, dall'amministrazione di WordPress, create una nuova pagina. Nel box "template", nel menù a tendina, troverete la nuova voce "Advanced Search Demo": selezionatela, date un titolo alla vostra pagina e salvatela. Visualizzandola, troverete una pagina con un form "preconfezionato", molto probabilmente ben diversa dal tema del vostro sito WordPress.

La cosa più rapida, almeno secondo me, è creare una copia del file page.php del vostro tema, rinominandola per esempio advancedsearchpage.php.

In questa nuova pagina, andate ad apportare le seguenti modifiche:

Ora potete eliminare il file wp-advanced-search-demo.php dal vostro tema e, sempre dall'amministrazione di WordPress, creare una pagina scegliendo il vostro nuovo template (che avevamo chiamato "Advanced Search Page"). Salvate e visualizzate la pagina e vedrete che, almeno graficamente, ora finalmente tutto torna.

STEP 3: riprogrammiamo la ricerca

La demo di WP Advanced Search, in quanto tale, necessita di alcune modifiche sostanziali, per poter fare al caso vostro. Impariamo come andare a metterci le mani!

Tutto ciò che vi chiede WP Advanced Search è di dargli in pasto una serie di parametri, nell'array $args, opportunamente configurati.

Il parametro wp_query dà alcune informazioni importanti sulle impostazioni della nostra ricerca avanzata.
Il codice seguente, indica che la ricerca sarà effettuata sui post, darà 5 risultati per pagina, in ordine per data decrescente.

È possibile usare tutti i parametri specificati qui: http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

Per quel che riguarda i parametri fields, anche qui avete un'ampia gamma di opzioni con cui sbizzarrirvi.

Per ciascun fields potete impostare i seguenti valori, per i quali vi rimando alla documentazione ufficiale:

Per fare un esempio, potete impostare un menù a tendina con i valori di una tassonomia realizzata da voi (nell'esempio, lo slug è my_taxonomy), in questo modo:

O ancora, potete "pescare" in un vostro custom field (nell'esempio chiamato my_custom_field, i cui valori nel database sono 0, 1 e 2), creando una checkbox così:

Qualora usiate i checkbox o i radio buttons su un custom field, abbiate l'accortezza di utilizzare il parametro 'compare' => 'IN', altrimenti la ricerca vi darà un risultato falsato, a causa delle specifiche richieste di WP Query.

Date e private post: un piccolo bug

Come vi ho accennato all'inizio, ho scoperto questo plugin lavorando ad una banca di dati riservati, ossia accessibili solo ad utenti registrati. C'è un piccolo bug, che si verifica quando utilizzate i campi per le date. Per risolverlo, dovete avere la pazienza di modificare la funzione get_dates file wpas.php

E aggiungere il parametro 'post_status' nel vostro form, all'interno di $args['wp_query'] qualora ce ne sia bisogno

Tutti gli altri campi sono piuttosto intuitivi, ma vi esorto dare un'occhiata al videotutorial (in inglese) e a scrivermi nei commenti per qualsiasi dubbio, curiosità e considerazioni su questo straordinario strumento di ricerca da aggiungere ai vostri siti WordPre

Se invece hai un sito o vorresti un sito in WordPress e vorresti aggiungere questa straordinaria funzionalità di ricerca avanzata, non esitare a contattarmi senza alcun impegno!

Realizzare un form per la ricerca avanzata su WordPress

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :