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 trick: inserire un testo predefinito alla fine dei post

WordPress trick: inserire un testo predefinito alla fine dei post

Una funzionalità che può spesso tornare utile sul vostro blog WordPress è quella di inserire un testo alla fine di alcuni post, in modo automatico. Ad esempio, una buona idea per incrementare i nostri guadagni può essere quella di inserire una breve frase, con tanto di link al programma di affiliazione, sotto tutti i ...
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 ...
Usare TinyMCE come editor dei nostri plugin WordPress

Usare TinyMCE come editor dei nostri plugin WordPress

Settimana scorsa vi ho spiegato come inserire l'editor di WordPress nei vostri plugin, tuttavia dopo svariati test, ho trovato alcuni limiti nello script che vi ho proposto: la parte di HTML non funziona; è compatibile solo con le ultime versioni di WordPress; non è possibile inserire più di un editor nella stessa pagina. Alla luce di questi ...
WordPress: eliminare i contenuti duplicati con i Canonical link

WordPress: eliminare i contenuti duplicati con i Canonical link

Dalla versione 2.7 di WordPress è stata introdotta la paginazione dei commenti: quando un articolo ha più di un certo numero di commenti, questi verranno suddivisi su più pagine. Se avete attivato questa funzionalità sul vostro blog, si crea però un buon numero di contenuti duplicati, perchè avremo sia la pagina principale con l'articolo ...
Usare l'editor di WordPress all'interno dei nostri plugin

Usare l’editor di WordPress all’interno dei nostri plugin

Dopo lunghe ricerche e moltissimi test, ho finalmente trovato il modo di inserire l'editor di WordPress all'interno dei plugin creati da me. Immaginate di sviluppare un plugin WordPress, nelle cui opzioni avete una textarea dove l'utente deve poter scrivere del testo formattato. Come prima idea potrebbe venirvi in mente di utilizzare TinyMCE ed incorporare ...

21 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