Cerca

Personalizzare la ricerca di WordPress con i Custom Post Types

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.

Condividi se ti è piaciuto!

Altri articoli che potrebbero interessarti:

Picture of Roberto Rota

Roberto Rota

Libero professionista, un "artigiano del web", lavoro nella comunicazione in rete da quando esiste Internet. Mi occupo principalmente di assistenza su WordPress e assistenza e consulenza WooCommerce, seguo la realizzazione di progetti web, in particolare siti di e-commerce, visibilità e comunicazione in rete. Il mio curriculum è su Linkedin, e mi puoi trovare anche su Instagram, FaceBook e Twitter.

DAI IL TUO CONTRIBUTO

Se il mio lavoro ti è stato di aiuto, contribuisci alla continuità di questo sito.
Basta una piccola donazione su PayPal, una pizza e una birra alla tua salute!

5 risposte

  1. 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)

  2. 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

    1. 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.