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:

Immagine di 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 utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.