Ti sei mai chiesto come puoi limitare i tuoi risultati di ricerca a tipi di post specifici? Non è molto difficile. Ti abbiamo già mostrato come disabilitare la funzione di ricerca in WordPress modificando il file functions.php. Ora faremo la stessa cosa tranne che per filtrare i nostri risultati di ricerca.
Apri il tuo file functions.php e aggiungi i seguenti codici:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Nota la riga che dice
$query->set('post_type',array('post','page'));
Puoi filtrare i risultati di ricerca modificando i valori nella variabile array. Al momento è impostato per visualizzare post e pagine, ma puoi modificarlo per visualizzare qualsiasi cosa tu voglia.


Ankit manandgar
come posso ottenere risultati di ricerca solo in base al titolo del post?
Anna
Grazie per questo codice – ha funzionato, anche se l'hai aggiornato l'ultima volta nel 2013! Il mio tema utilizza anche una ricerca istantanea e vorrei limitare anche lì i risultati. Come potrei fare?
Sparsh Goyal
Il mio tema attuale mostra post con poche righe iniziali per il termine/parola cercata. Voglio personalizzarlo per mostrare quel paragrafo contenente il termine/parola cercata nell'estratto del post. In altre parole, voglio mostrare il testo correlato nell'estratto del post, non il paragrafo iniziale nei risultati di ricerca. Qualcuno può aiutarmi a fare questo....
Azamat
Salve,
Come posso limitare i risultati di ricerca per tipi di post specifici E termini di tassonomia personalizzata specifici?
Steven
Ho una semplice funzione nel file functions.php del mio tema, che dovrebbe filtrare solo i Post per un termine di ricerca... quando cerco qualcosa ora, appare l'errore HTTP 500 "Il sito web non può visualizzare la pagina". Qualcuno ha un'idea di cosa c'è che non va nella mia funzione?
function searchFilter($query) { if ($query->is_search) { wp_reset_query(); $args = array ( ‘s’ => $_GET[‘s’] ); query_posts( $args ); } } add_filter(‘pre_get_posts’, ‘searchFilter’);
Greg
Questo sta limitando tutti i moduli di ricerca al tipo di post personalizzato – inclusa la barra laterale searchform, che deve restituire tutti i risultati. Questo funziona per me:
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $type = $_GET[‘post_type’]; if($type == ‘book’) { $query->set(‘post_type’,array(‘book’)); } } } return $query; } add_filter(‘pre_get_posts’,’searchfilter’);
Jonathan Joosten
Grazie per l'aiuto, ho migliorato il tuo codice in modo che le persone possano cercare solo i post_types consentiti.
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $types = (array) $_GET[‘post_type’]; $allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false)); foreach($types as $type) { if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; } } if(count($filter_type)) { $query->set(‘post_type’,$filter_type); } } } } add_filter(‘pre_get_posts’,’searchfilter’);
Dan Sz.
Come viene implementato? Se ho capito bene il commento di Greg, vogliamo un singolo modulo che sia limitato a un tipo di post, mantenendo la ricerca predefinita intatta per altre aree del sito.
Lo chiedo perché un sito su cui sto lavorando necessita di una "Libreria Risorse" ricercabile, che vorrei sviluppare senza compromettere la normale funzionalità di ricerca.
Tadeu
Ciao, è possibile limitare la ricerca solo a titolo, categoria e tag dei post?
Sandeep
Ciao,
Non sono in grado di limitare le pagine nel filtro di ricerca.
Ho solo bisogno della ricerca all'interno dei post e non delle pagine.
$query->set(‘post_type’,array(‘post’));
Questo visualizza anche le pagine.
Jared
Solo una nota da aggiungere a questo, non è necessario restituire $query.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
Grazie per l'ottimo suggerimento!
Staff di WPBeginner
Nick La funzionalità di ricerca di WordPress non è eccezionale nel trovare contenuti.
Nick
Ho usato questo codice per limitare i miei risultati di ricerca alle Pagine, non ai Post. Ha funzionato in tal senso, tuttavia, sembra cercare solo i nomi delle Pagine anziché il contenuto. Ad esempio, se un utente cerca "prezzi", la pagina Prezzi sarà un risultato ma se cerca "prezzo" o "costo" (entrambe parole presenti nella pagina prezzi) non viene trovato nulla. Manca uno snippet di codice?
emre
Hi,
I have a question and I couldn’t get a solution since last month.
I have lost of categories, pages and re-directions in my blog so my search box finds many unnecessary results when you try to search something. I want to customize my search.php for only categories part. In other words, we you search something, the results should be only from categories sections. So I will be get rid of redundant & duplicated results. My current codes are as below…Please help me
sam
Come limitare per categoria specifica? grazie
Supporto WPBeginner
Sam, consulta la nostra guida su come aggiungere un filtro di ricerca per tassonomia in WordPress.
Amministratore
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
C'è un problema con il tuo snippet:
Limita i risultati della ricerca nel backend, dovresti racchiuderlo con:
if ( !is_admin() ) {
// snippet
}
bloggingfuture
Questo è un codice piuttosto prezioso per WordPress. Grazie!
Alan Hughes
Quindi, come applicheresti questo a una barra di ricerca specifica? Non si applica semplicemente il filtro a ogni barra di ricerca sul tuo sito, vero?
goJohnnyGo
Sei mai riuscito a capire come applicarlo a barre di ricerca specifiche (non universalmente)?
Staff editoriale
Sì, abbiamo un articolo qui:
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Amministratore
scotte_sprott
Come posso limitare i risultati di ricerca per mostrare solo pagine?
wpbeginner
@scotte_sprott Nell'array, tieni solo 'page' e rimuovi 'posts'.