
Tempo fa abbiamo visto come escludere i post di una certa categoria dalla Home del nostro blog WordPress.
E se volessimo escludere una categoria da ogni sezione del blog? Dalla home, dal feed RSS, dalla ricerca, dagli archivi…
Se siamo pigri, ci viene incontro il plugin Advanced Category Excluder, ma se invece siamo più smanettoni e non vogliamo appensantire il blog con inutili plugin, ecco come possiamo fare.
Come al solito, possiamo inserire il codice direttamente nel file functions.php del nostro tema WordPress, oppure creare un plugin apposito.
Sfruttiamo il filtro pre_get_posts e andiamo ad escludere la categoria dai Feed RSS, ad esempio:
if ($query->is_feed){
$query->set('cat','-10');
}
return $query;
}
add_filter('pre_get_posts','exclude_category');
Ovviamente 10 è l’ID della categoria di cui non vogliamo mostrare i post.
Se invece volessimo escludere la categoria dai risultati della ricerca, basterà cambiare la condizione dell’if:
if ($query->is_search){
$query->set('cat','-10');
}
return $query;
}
add_filter('pre_get_posts','exclude_category');
In questo modo escluderemo dalla ricerca tutti i post della categoria 10.
Altre condizioni che possiamo utilizzare:
$query->is_homeper escludere i post dalla home page.$query->is_archiveper escludere i post dagli Archivi.
Possiamo anche combinare più condizioni:
if ($query->is_home || $query->is_feed || $query->is_search || $query->is_archive){
$query->set('cat','-10');
}
return $query;
}
add_filter('pre_get_posts','exclude_category');
Così si esclude in un colpo solo i post della categoria 10 dal flusso di Home, Feed, Ricerca e Archivi.
14 Commenti












Buono a sapersi
Ma quello nella foto chi è, mastro lindo?
Ahahah, in effetti….!
Dovrebbe essere un buttafuori
Advanced Category Excluder l’ho trovato anch’io piuttosto pesante per le mie esigenze, molto meglio agire di codice come proponi
L’esclusione di una categoria dal feed è anche un ottimo metodo per creare un sideblog che non spari gli articoli agli iscritti. Una sorta di “sezione newsmastering” manuale e più gestibile.
Un po’ come il tuo sideblog, già! Lo trovo un’ottima idea, chissà che non decida di implementarlo pure io. Peccato che il mio attuale layout non abbia molto spazio…
Proprio l’altro giorno stavo cercando una soluzione simile ma poi ripensandoci bene quella categoria non l’ho voluta escludere più e ho abbandonato la ricerca di plugin, script, ecc.
Comunque molto meglio il codice che proponi tu.
E’ meglio evitare inutili (e spesso pesanti) plugin!
A proposito dei plugin, non pensavo appesantissero così tanto wordpress.
Ultimamente ho aggiornato il mio blog e ne ho cancellati parecchi.
Ora vola!!!
Ottimo articolo. Bravo!
I plugin di WordPress pesano un sacco: se non sono fatti bene, caricano tutte le risorse e le funzioni lato admin, anche se siamo nel frontend!
Oppure ce ne sono alcuni con una pessima gestione della memoria.. ecc…
Se si è in grado, è sempre meglio realizzarsi da soli i propri plugin
Ma com’è che non mi arrivano le notifiche email a questi commenti? Forse perché ho usato F-Connect (qui in alto a destra) essendo loggato su facebook?
Sì, purtroppo se ti loggi con Facebook Connect, non c’è modo di salvare la tua email e quindi non possono arrivarti le notifiche dei commenti.
E’ da un po’ che vorrei fare un plugin che manda la notifica via messaggio Facebook…
Ciao Daniele,
Vorrei testare la tua soluzione in combinazione con LockPress su un dominio sperimentale. Per poi (se funge come credo che debba fungere) passarla sul dominio vero e proprio..
Asp, devo fare una premessa d’obbligo: LockPress è un plugins che permette di fare pagare una somma che si decide, tramite paypal, per visionare un articolo, o una pagina del nostro blog.
(link http://twoenough.com/products/lockpress)
L’idea mi piaceva parecchio, poichè alcuni contenuti che ho in mente di inserire su un Blog dedicato agli orologi, sono delle lezioni di orologeria (es: come smontare un movimento e rimontarlo, come costruirsi una pendoletta ecc ecc).
Il tutto con video-corsi e dispense in pdf….
Ovviamente il materiale è di qualità, visto che viene scritto e “videato” in un laboratorio di riparazioni (la parte scritta viene, per correttezza, visionata da un altro maestro orologiaio, al fine di potere offrire una validità del contenuto maggiore)
Il tuo script in questo caso sarebbe eccezionale, perchè mi permetterebbe di non fare visualizzare da nessuna parte i link agli articoli della categoria creata appositamente..
Ma ho dei dubbi e chiedo prima
1) lo script che qui fornisci è solo per gli articoli?
1a) le pagine quindi verrebbero incluse ad una ricerca?
2) sempre a riguardo dello script: gli articoli verrebbero ommessi anche dalla sitemap? (che, nel mio caso, viene generata automaticamente ad ogni aggiornamento sul Blog, grazie al plugins XML-Sitempa)
Nota: in realtà il punto 1 può essere anche bypassato proprio dalle caratteristiche del plugin LockPress, poichè l’utente si imbatterebbe in una schermata che lo invita a contribuire per potere accedere alla lettura della pagina…
Insomma, che ne pensi??
Ciau e grazie per l’ottimo script
Ciao,
ho inserito il codice nel file function.php, però se lascio l’ultima riga mi da un’errore corrispondente proprio a quella riga, se invece la tolgo il post viene trovato con la funzione ricerca ed anche negli archivi…
Qualcuno può aiutarmi??
L’ultima riga è proprio quella che serve per attivarlo.
Che errore ti dà?
Ciao Daniele,
Fatal error: Call to undefined function add_filter() in /web/htdocs/www.graficamente.net/home/wp-includes/functions.php on line 3368
Dove 3368 è proprio la riga in questione;
una curiosità, io ho preso il codice e l’ho inserito pari pari nel file function.php prima di “?>” alla fine, va bene così?
Ahhh, ho capito il problema!! Devi inserire il codice nel file /wp-content/themes/tuotema/functions.php, non in quello della cartella wp-includes!
ops…
ora funziona tutto perfettamente, l’ho provato in un sito che non uso più.
Ora lo applico a Lavoro e Diritti, poi mi dirai se ti piace il risultato…
Ciao e grazie mille