
Il file search.php cerca sia negli articoli WordPress in generale che nei prodotti WooCommerce, ma ne parlo nella categoria WooCommerce perchè è molto utile per la ricerca dei prodotti di un ecommerce. Creando o modificando (se presente) il file search.php nella cartella del tema, si personalizza la modalità di visualizzazione dei risultati della ricerca.
Per evitare ricerche inutili, imposto spesso questo pezzo di codice per evitare di considerare le ricerche con stringhe vuote:
add_filter( 'posts_search', function( $search, \WP_Query $q ){
if( empty( $search ) && $q->is_search() && $q->is_main_query() ){
$search .=" AND 0=1 ";
}
return $search;
}, 10, 2 );
In un ecommerce però è utile filtrare gli articoli WordPress e tenere nel risultato della ricerca, soltanto i prodotti WooCommerce, quindi utilizzo questo codice per limitare la ricerca ai soli prodotti:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('product'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Questo ad esempio può essere inserito per limitare i post per pagina di risultato a 8:
$query->set('posts_per_page', 8);