Exclude category

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

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;
}

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.

Leave a Comment