Tutorial WordPress affidabili, quando ne hai più bisogno.
Guida per principianti a WordPress
WPB Cup
25 Milioni+
Siti web che utilizzano i nostri plugin
16+
Anni di esperienza con WordPress
3000+
Tutorial WordPress di esperti

Come Limitare i Risultati di Ricerca per Tipi di Post Specifici in WordPress

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.

Dichiarazione: Il nostro contenuto è supportato dai lettori. Ciò significa che se fai clic su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come è finanziato WPBeginner, perché è importante e come puoi supportarci. Ecco il nostro processo editoriale.

Il Toolkit WordPress Definitivo

Ottieni l'accesso GRATUITO al nostro toolkit - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Interazioni del lettore

26 CommentsLeave a Reply

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

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

  3. Salve,

    Come posso limitare i risultati di ricerca per tipi di post specifici E termini di tassonomia personalizzata specifici?

  4. 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’);

  5. 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’);

    • 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’);

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

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

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

  8. 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 :)

  9. C'è un problema con il tuo snippet:

    Limita i risultati della ricerca nel backend, dovresti racchiuderlo con:


    if ( !is_admin() ) {
    // snippet
    }

  10. 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?

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra politica sui commenti, e il tuo indirizzo email NON verrà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.