WordPress: come pubblicare feed per ogni categoria sul tuo blog
Per impostazione predefinita, un blog WordPress ha un feed che incorpora tutti i suoi post, indipendentemente dalla categoria. Un modo per migliorare la personalizzazione e la segmentazione per i visitatori del tuo sito è abilitare un RSS feed specifici per le loro categorie di interesse. Puoi anche utilizzare uno specifico per categoria feed per pubblicare una newsletter via email. Tuttavia, se lo desideri, puoi creare feed di categorie personalizzate per il tuo blog WordPress o tipi di post personalizzati.
Feed di categorie WordPress
Ecco il codice che puoi aggiungere al tuo temi per bambini functions.php
file che genera feed RSS specifici per categoria in WordPress con elenchi di inclusione ed esclusione per gli ID di categoria:
function custom_category_feeds() {
$categories = get_categories();
// Define an array of category IDs to include and exclude
$included_category_ids = array(3, 4); // Add IDs of categories to include
$excluded_category_ids = array(1, 2); // Add IDs of categories to exclude
foreach ($categories as $category) {
$category_id = $category->term_id;
// Check if the category should be excluded
if (in_array($category_id, $excluded_category_ids)) {
continue; // Skip excluded categories
}
// Check if the category should be included
if (!empty($included_category_ids) && !in_array($category_id, $included_category_ids)) {
continue; // Skip categories not in the inclusion list
}
$category_slug = $category->slug;
$category_name = $category->name;
// Start building the RSS feed content
$rss_feed = '<?xml version="1.0" encoding="UTF-8" ?>' . "\n";
$rss_feed .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' . "\n";
$rss_feed .= '<channel>' . "\n";
$rss_feed .= '<title>' . $category_name . ' RSS Feed</title>' . "\n";
$rss_feed .= '<link>' . get_bloginfo('url') . '</link>' . "\n";
$rss_feed .= '<description>' . $category_name . ' RSS Feed</description>' . "\n";
$rss_feed .= '<atom:link href="' . esc_url(site_url("/category/$category_slug/feed/")) . '" rel="self" type="application/rss+xml" />' . "\n";
// Query posts in the current category
$args = array(
'cat' => $category_id,
'posts_per_page' => 10, // Adjust as needed
);
$category_posts = new WP_Query($args);
while ($category_posts->have_posts()) {
$category_posts->the_post();
$rss_feed .= '<item>' . "\n";
$rss_feed .= '<title>' . get_the_title() . '</title>' . "\n";
$rss_feed .= '<link>' . get_permalink() . '</link>' . "\n";
$rss_feed .= '<pubDate>' . get_the_time('D, d M Y H:i:s O') . '</pubDate>' . "\n";
$rss_feed .= '</item>' . "\n";
}
wp_reset_postdata();
$rss_feed .= '</channel>' . "\n";
$rss_feed .= '</rss>';
// Output the feed
header('Content-Type: application/rss+xml; charset=UTF-8');
echo $rss_feed;
}
}
add_action('do_feed_category', 'custom_category_feeds', 10, 1);
add_action('do_feed_category_rss2', 'custom_category_feeds', 10, 1);
Ecco una spiegazione del codice:
- Dichiarazione di funzione: Il codice definisce una funzione denominata
custom_category_feeds
. - Elenchi di inclusione ed esclusione di categorie:
- Sono definiti due array:
$included_category_ids
: questo array contiene gli ID di categoria che desideri includere nei feed.$excluded_category_ids
: questo array contiene gli ID di categoria che desideri escludere dai feed.
- Sono definiti due array:
- Passa attraverso le categorie: Il codice usa
get_categories()
per recuperare un elenco di tutte le categorie. - Controllo elenco esclusioni: Per ogni categoria, controlla se l'ID della categoria è nel file
$excluded_category_ids
vettore. In caso affermativo, il codice prosegue con la categoria successiva (la esclude). - Controllo dell'elenco di inclusione: Quindi controlla se la categoria deve essere inclusa. Se la
$included_category_ids
l'array non è vuoto e l'ID della categoria non è presente in quell'array, il codice continua con la categoria successiva (la esclude dall'inclusione). - Generazione del contenuto del feed RSS: Il codice procede alla generazione del contenuto del feed RSS per le categorie che superano i controlli di inclusione ed esclusione. Il codice per generare il contenuto del feed RSS non viene mostrato ma dovrebbe essere simile agli esempi precedenti.
- Emetti il feed: Infine, imposta il tipo di contenuto appropriato per il feed RSS e riproduce il contenuto del feed RSS.
La caratteristica principale di questo codice è la possibilità di specificare sia un elenco di inclusione che un elenco di esclusione degli ID di categoria, offrendoti un controllo dettagliato su quali categorie sono incluse o escluse nei feed RSS specifici della categoria generati.
Il tuo feed di categorie WordPress
Gli utenti possono utilizzare il URL struttura fornita in precedenza per accedere al feed personalizzato specifico della categoria che hai creato in WordPress. Il formato dell'URL per accedere a un feed specifico della categoria è il seguente:
http://yourwebsite.com/category/{category-name}/feed/
Ecco una ripartizione di come chiamare il feed:
- sostituire
yourwebsite.com
con il dominio o l'URL del tuo sito web effettivo. - Sostituire {
category-name
} con lo slug della categoria per la quale desideri accedere al feed. Lo slug è una versione minuscola, separata da un trattino, del nome della categoria. Ad esempio, se il nome della tua categoria è Suggerimenti di marketing, la lumaca potrebbe essere di marketing-tips. - Aggiungi
/feed/
alla fine dell'URL. Ciò indica che desideri accedere al feed RSS o Atom per la categoria specifica.
Ad esempio, se il tuo sito web è "example.com" e desideri accedere al feed per la categoria "Suggerimenti per il marketing", l'URL sarà:
http://example.com/category/marketing-tips/feed/
Gli utenti possono inserire questo URL nel proprio browser Web o utilizzare le applicazioni di lettura dei feed per iscriversi al feed specifico della categoria. Questo URL fornirà loro il feed RSS o Atom per la categoria selezionata, consentendo loro di rimanere facilmente aggiornati sui contenuti di quella categoria.