Il form di ricerca predefinito di wordpress può essere incluso in qualsiasi parte di un template inserendo semplicemente la funzione

     echo get_search_form();

Di default tra i risultati della ricerca compariranno tutti i contenuti del blog comprese le pagine, gli articoli e i post personalizzati.

Per modificare questo comportamento è necessario intervenire sulla query principale prima che questa venga lanciata. Ciò è possibile attraverso l’hook pre_get_post.

L’hook permette di accedere all’oggetto $query e di cambiarne alcune proprietà.

//functions.php
function search_filter( $query ) {

    if ( !is_admin() && $query->is_main_query() )
    {
        if ($query->is_search)
        {
          $query->set('post_type', array( 'post', 'book' );
        }
    }
}

add_action( 'pre_get_posts','search_filter' );

Nel blocco di codice abbiamo passato il metodo $query->set () in cui specifichiamo che la ricerca deve essere effettuata nei post regolari e nel custom post type book. Abbiamo quindi escluso indirettamente i contenuti delle pagine dalla ricerca (cioè il post_type = ‘page’).


  inStileWeb.com
blog comments powered by Disqus