Questo piccolo snippet si occupa di escludere in base alla condizione applicata, una categoria, o più categorie dall’elenco dei post
Il tutto torna utile quando dall’elenco completo si voglia eliminare una o più categorie, dedicate magari ad altri argomenti.
Analizzando il codice vediamo che utilizziamo il filtro pre_get_post che va a modificare la query effettuata al db prima che questa venga lanciata; la funzione che viene richiamata, modifica infatti la variabile $query quindi la restituisce per essere eseguita sul database.
All’interno della funzione, controlliamo, tramite un Conditional Tag proprietario di WP, se la modifica deve essere effettuata ovunque ci troviamo o solamente in una pagina specifica. Utilizzando is_page() chiediamo infatti di verificare se siamo in quella particolare pagina mentre con is_home() chiediamo di controllare se siamo nella home page del sito.
Quindi tramite la funzione set() andiamo ad indicare se vogliamo aggiugere (+ID) o sottrarre (-ID) la categoria di cui siamo interessati utilizzando il suo ID di riferimento.
Escludere le categorie
add_filter('pre_get_posts', 'excludeCat');
function excludeCat($query) {
//$query->is_home: dalla home page
if ( $query->is_page('eventi') ) { //uso lo slug della pagina
$query->set('cat', '-3,-5,-23'); //sottraggo il numero della categoria'-3,-5,-23'
}
return $query;
}