I feed di WordPress sono costituiti di default dagli ultimi 10 articoli pubblicati nel blog.

I feed principali di wordpress sono raggiungibili all’indirizzo http://miosito.it/feed oppure http://miosito.it/?feed=rss.

Nel backend di wordpress non abbiamo nessuna possibilità di intervento che ci permetta di escludere determinate categorie di articoli o singoli post dai feed rss.

Perché può essere utile filtrare il contenuto dei feed

Decidere quali post andranno a costituire i feed è importante per evitare sommergere i nostri lettori con un eccessivo numero di post oppure per evitare di esporre articoli non proprio importanti.

Un motivo meno banale si presenta quando i nostri feed sono utilizzati da altri siti come aggregatori di blog. In questi casi può essere utile posticipare la pubblicazione nel feed ad un momento successivo e solo quando il post è stato indicizzato da google.

Esclusione di un articolo dai feed tramite codice php

Nello snippet seguente troviamo gli array $post_id e $cat_id che contengono i singoli post e le categorie da escludere.
Attraverso il metodo $query->set interveniamo sulla query che ricava i feed.
La funzione isw_pre_get_feed() viene eseguita solo se non ci troviamo nel backend if ( !is_admin() ) e solo se dobbiamo visualizzare i feed if ( $query->is_feed ). La funzione viene eseguita prima che la query dei feed venga lanciata e per questo è associata al filtro pre_get_posts

function isw_pre_get_feed( $query )
	{

		if ( !is_admin() )
		{
 			if ( $query->is_feed )
 			{
 				// contenuti da escludere
 			    $post_id = array( 33, 56 );
 			    $cat_id = array( 4, 5 );

 			     // modifica la query
 			   	if ( count( $post_id ) > 0 )
 			   		$query->set( 'post__not_in' , $post_id );
 			   	if( count( $cat_id ) > 0 )
   					$query->set('category__not_in', $cat_id );

 			}
 		}	

 		return $query;   

	}

add_filter(  'pre_get_posts', 'isw_pre_get_feed' );

Esclusione contenuti dai feed tramite plugin

Per evitare di aprire ogni volta il file functions.php per escludere un articolo o una categoria, ho creato un plugin basato sul codice appena riportato.
Gli array $post_id e $cat_id sono ricavati da una check box inserita nell’editor dei post e della schermata di modifica delle categorie.

feed filter - escludi post dai feed

feed filter - escludi categoria dai feed

Il plugin può essere scaricato da Github oppure in questa pagina.


  inStileWeb.com
blog comments powered by Disqus