Il problema della ricerca su più tipi di post si pone spesso con i Custom Post Types in genere, ma spesso anche con WooCommerce ed i post personalizzati di temi e plugin, come i classici Portfolio, Gallery etc.
Mettiamo di avere un WordPress dove abbiamo creato due Custom Post Types “Biblioteca” e “Progetti”, e magari abbiamo installato pure WooCommerce.
Ci troveremo quindi a dover lavorare con questi tipi di post:
- post (gli articoli di WordPress)
- page (le pagine di WordPress)
- product (i prodotti di WooCommerce)
- biblioteca (custom post type creato da noi)
- progetto (custom post type creato da noi)
Come fare per estendere la ricerca di WordPress ad uno o più Custom Post Types, e dato che ci siamo far sì che cerchi anche nei prodotti?
Facile, con il solito snippet.
Gli esempi che seguono devono essere inseriti nel file funcions.php del tema in uso, e come al solito è consigliabile l’utilizzo di un tema child.
Limitare la ricerca di WordPress ad un singolo tipo di post, esempio ai prodotti di WooCommerce
Con lo snippet qui sotto si limita la ricerca di WordPress ai soli prodotti di WooCommerce, ma sostituendo il tipo di post nella riga 4, esempio “product” con “progetto”, si limita la ricerca ai soli progetti.
if ( !is_admin() ) { function searchfilter($query) { if ($query->is_search && !is_admin() ) { $query->set('post_type',array('product')); } return $query; } add_filter('pre_get_posts','searchfilter'); }
Estendere la ricerca di WordPress a più tipi di post
Con questa versione dello snippet la ricerca di WordPress viene estesa a tutti i tipi di post.
Per modificare i tipi di post coinvolti, basta modificare la lista della riga quattro:
if ( !is_admin() ) { function searchfilter($query) { if ($query->is_search && !is_admin() ) { $query->set('post_type',array('post','page','product','biblioteca','progetto')); } return $query; } add_filter('pre_get_posts','searchfilter'); }
Si possono aggiungere altri tipi di post personalizzati utilizzati dai temi, come ad esempio il classico Portfolio o le FAQ, basta solo individuare la stringa usata per definire i post personalizzati.
Snippet ricavati dalla documentazione di WooCommerce.
5 risposte
Ciao Roberto Interessante il tuo post, avrei un quesito da porti , ho notato che nel pannello amministratore di wordpress se vado in prodotti ed uso il tasto cerca prodotti di woocommerce non funziona correttamente.. per la precisione il cerca è limitato solo per i codici prodotti e descrizione ma se volessi cercare per parole o codici inseriti nei tags del prodotto relativo esso non funziona. Che tu sappia è possibile risolvere ed ampliare la ricerca su tutte le tabelle wordpress in modo da considerare tutti i campi coinvolti da quel prodotto (compreso i tag)
La mia salvezza! Cercavo da mesi una soluzione! Posso chiederti un piccolo aiuto? Io ho inserito il secondo codice da te mostrato in functions.php. Ha funzionato, ma siccome sto usando un compositore per creare le pagine adesso nelle ricerche mi viene un bruttissimo estratto di testo.
Tramite CSS se oscuro l’estratto mi toglie anche il titolo e così non si capisce niente.
Come posso fare?
Ecco un esempio di ricerca fatta sul sito: http://www.clubaffari.it/?s=ristorante+trapani&post_type=post.
Ti ringrazio. Cordiali saluti
Probabilmente il tema gestisce in modo limitato le funzioni di ricerca e la pagina di risposta.
Io credo che dovresti interpellare lo sviluppatore del tema, sicuramente saprà fornirti le indicazioni per le modifiche necessarie al loop della ricerca.
rob
È proprio l’argomento che dobbiamo affrontare…
Allora siamo un passo avanti 😉
rob