Oggi mi serviva escludere dalla ricerca di wordpress tutte quelle pagine che arrivavano dal plugin promotion, e da altri plugin installati sul mio sistema. Inserite nel file function.php queste righe per effettuare la ricerca solo su post e pagine:
<?php
function search_filter($query) {
if ($query->is_search) {
$query->set('post_type', array('post', 'page'));
}
return $query;
}
add_filter('pre_get_posts','search_filter');
?>
Volete invece escludere una categoria dalla ricerca? Ecco il codice:
<?php
function search_filter($query) {
if ($query->is_search) {
$query->set('cat', '-14');
}
return $query;
}
add_filter('pre_get_posts','search_filter');
?>
sostituite a 14 l’id della categoria che volete escludere.
Per vedere quali argomenti potete cambiare, provate a scrivere nel vostro function.php questo codice:
<?php
function search_filter($query) {
if ($query->is_search) {
echo '<pre>';
print_r($query);
echo '</pre>';
}
return $query;
}
add_filter('pre_get_posts','search_filter');
?>
Ovviamente questa esclusione può essere allargata ad altre query, sostituendo ad esempio $query->is_search con $query->is_home