BigThink

Escludere una categoria da tutte le sezioni di WordPress

Escludere post da WordPress

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:

function exclude_category($query){
    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:

function exclude_category($query){
    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_home per escludere i post dalla home page.
  • $query->is_archive per escludere i post dagli Archivi.

Possiamo anche combinare più condizioni:

function exclude_category($query){
    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.

Articolo scritto da Ghido

Fondatore di BigThink.it, si occupa dello sviluppo e del coordinamento dei progetti tecnologici. Specializzato nel Marketing su Facebook e nello sviluppo di Applicazioni Social, fa consulenza e formazione ad aziende ed agenzie.

Leggi anche...

WordPress: creare una sezione di post in Evidenza

WordPress: creare una sezione di post in Evidenza

Vi è mai capitato di scrivere un ottimo articolo e vederlo sparire nel tempo, senza alcuna visita o commento? Esistono varie tecniche per dare visibilità ai post più vecchi del nostro blog, che normalmente non verrebbero più letti, e portargli nuovamente visite. Possiamo usare plugin come Related Post with Thumb per mostrare gli articoli ...
WordPress: gestire un sottomenu a categorie con icone

WordPress: gestire un sottomenu a categorie con icone

Dare visibilità ad ognuno dei temi trattati dal nostro blog non sempre è semplice, perchè non inserire un menu di navigazione con icone? La soluzione che proporremo sarà senza plugin, una versione adattabile alle proprie esigenze senza l’utilizzo di pesanti script jQuery. Inoltre potremo decidere esattamente quali cateogorie mostrare e in che ordine, evitandoci così ...
WordPress: escludere dalla home i post di una certa categoria

WordPress: escludere dalla home i post di una certa categoria

Qualche mese fa avevo scritto una pillola per WordPress che è stata piuttosto apprezzata: Come creare una sezione di post in Evidenza, nella quale spiegavo come creare una sezione a parte, con i post che si vogliono mettere in evidenza. Ieri, Teodoro Di Stasi mi ha domandato: Come potrei fare in modo che gli articoli ...
Come inserire il Facebook Like Button su WordPress

Come inserire il Facebook Like Button su WordPress

Nello scorso articolo ti ho spiegato i pro e i contro del Like Button. Se ti sei convinto e ora vuoi installarlo su ogni post del tuo blog WordPress, ora vedremo come fare. In molti hanno avuto problemi, quindi ti spiegherò nel dettaglio sia come inserirlo manualmente, che con i plugin appositi. Pronti, via! Inserire il ...
WordPress: Dare agli spammer la possibilità di redimersi

WordPress: Dare agli spammer la possibilità di redimersi

Si conclude oggi la miniserie di Camu: dopo aver visto come va modificato l'.htaccess e come farlo in automatico, oggi impariamo a personalizzare la pagina di errore. Dai commenti sul mio blog alla prima puntata di questa miniserie è venuta fuori un'interessante discussione su cosa "vedono" gli spammer presenti nella lista nera quando tentano ...

28 Commenti

  1. babes

    you rock!

    17 settembre 2011, 14:03
  2. Alessio

    Non dico utile.. di più.. mi sei stato di salvezza.. infatti modificando il loop di twentyten non riuscivo in nessun modo.. ovvero.. riuscivo ma con delle anomalie.
    Col tuo metodo ho risolto subito ho apprezzato molto. Grazie!!!

    Ho imposato la pagina “sfoglia” come pagina articoli,
    mi occorreva che qui venissero elencati tutti gliarticoli relativi ad aggiornametni novità curiosità, ma non gli articoli dei “servizi” (una categoria con figli).
    Ho provato a modificare il file loop.php inserendo:

    …..
    escludeva i servizi ma non sfogliava per intero le pagine riprendendo sempre i post evidenziati in testa e i primi articoli a seguire, uguale in ogni pagina.

    Il tuo metodo ha risolto con il:
    $query->is_home

    ;)

    27 aprile 2011, 18:07
  3. Andrea

    O se eventualmente viene meglio vorrei far in modo che solo i post di una categoria vengano inseriti in home e tutti gli altri nelle loro rispettive categorie

    Grazie

    5 marzo 2010, 14:34
    • In questo caso diventa:

      function exclude_category($query){
          if ($query->is_home){
              $query->set('cat','10');
          }
          return $query;
      }
      add_filter('pre_get_posts','exclude_category');

      per far comparire in home solo gli articoli della categoria con ID 10

      5 marzo 2010, 15:07
  4. Andrea

    Ciao!
    Volevo chiedere una cosa: come faccio ad escludere più categorie dall’home?
    Il codice che hai messo tu funziona benissimo, io vorrei però togliere più categorie all’home

    Grazie

    5 marzo 2010, 14:33
    • Basta specificare tutti gli ID:

      $query->set('cat','-20,-21,-22');
      5 marzo 2010, 15:03
      • Andrea

        grazie mille! mi hai salvato! ;)

        5 marzo 2010, 15:28
  5. 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

    18 dicembre 2009, 18:59
  6. 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??

    18 dicembre 2009, 17:54
    • L’ultima riga è proprio quella che serve per attivarlo.
      Che errore ti dà?

      18 dicembre 2009, 18:27
      • 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ì?

        18 dicembre 2009, 18:37
        • Ahhh, ho capito il problema!! Devi inserire il codice nel file /wp-content/themes/tuotema/functions.php, non in quello della cartella wp-includes!

          18 dicembre 2009, 18:47
  7. Teodoro Di Stasi

    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 :-D

    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

    3 novembre 2009, 20:24
  8. 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?

    3 novembre 2009, 18:47
    • 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…

      3 novembre 2009, 18:50
  9. 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! ;-)

    3 novembre 2009, 12:52
    • 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 ;)

      3 novembre 2009, 20:10
  10. 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.

    2 novembre 2009, 23:03
    • 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…

      2 novembre 2009, 23:09
  11. Buono a sapersi :) Ma quello nella foto chi è, mastro lindo?

    2 novembre 2009, 19:49
    • Ahahah, in effetti….!
      Dovrebbe essere un buttafuori :P

      2 novembre 2009, 19:50

7 Citazioni