Il primo passaggio da fare è quello di dichiarare nel file “functions.php” del nostro tema utilizzato, il nome del Feed RSS che utilizzeremo, quindi rechiamoci nella cartella del tema e apriamo con un gestore di testo il “functions.php” aggiungendo alla fine le seguenti righe di codice (per dichiarare il nome del feed rss, e per dire in quale template recuperarlo).
///////////////////////////////////////////////////////////////////// //////////////////////// RSS Feed custom ////////////////////////// ///////////////////////////////////////////////////////////////////// add_action( 'init', 'custom_rss_template' ); function custom_rss_template() { add_feed( 'customfeed', 'customfeed_custom_rss_render' ); } function customfeed_custom_rss_render() { get_template_part( 'rss', 'customfeed' ); }
Fatto questo dobbiamo creare il file del template, con la relativa struttura, quindi sempre dentro la cartella del tema creiamo un file chiamato “rss-customfeed.php”.
Ora strutturiamo il template con il seguente codice, e personalizziamolo come meglio crediamo:
<?php /** * RSS 0.92 Feed Template for displaying RSS 0.92 Posts feed. * * @package WordPress */ header('Content-Type: ' . feed_content_type('rss') . '; charset=' . get_option('blog_charset'), true); $more = 1; $postCount = 10; $posts = query_posts('showposts='.$postCount.'&posts_per_page='.$postCount.'&ignore_sticky_posts=1'); echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"> <channel> <title><?php bloginfo_rss('name'); ?> - Feed</title> <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" /> <link><?php bloginfo_rss('url') ?></link> <description><?php bloginfo_rss('description') ?></description> <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate> <language><?php echo get_option('rss_language'); ?>it-it</language> <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod> <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency> <?php /** * Fires at the end of the RSS Feed Header. * * @since 2.0.0 */ do_action( 'rss_head' ); ?> <?php while (have_posts()) : the_post(); ?> <?php foreach((get_the_category()) as $category) { ?> <item> <title><?php the_title_rss(); ?></title> <category><?php echo $category->cat_name ?></category> <link><?php the_permalink_rss(); ?></link> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate> <guid isPermaLink="false"><?php the_guid(); ?></guid> <description><![CDATA[<?php the_excerpt_rss() ?>]]></description> <enclosure url="<?php the_post_thumbnail_url('medium'); ?>" type="image/*" length="0"/> <?php rss_enclosure(); ?> <?php do_action('rss2_item'); ?> </item> <?php } ?> <?php endwhile; ?> </channel> </rss>
Il feed è settato per mostrare gli ultimi 10 articoli pubblicati, se vogliamo modificare solo il numero di feed mostrati basta modificare il valore della variabile “$postCount”.
Nel caso di ulteriore personalizzazione della query, non eliminate questo valore “ignore_sticky_posts=1”.
Per visualizzare e testare il feed non ci resta che aprirlo da browser al proprio indirizzo, del tipo:
www.sitoweb.dot/feed/customfeed/
Nel feed oltre le normali informazioni è stata introdotta anche l’immagine in evidenza e la relativa categoria associata per ogni articolo! Prima di pubblicare il Feed consigliamo di effettuare un controllo di validazione sul sito W3C.
Se avete dei problemi con i feed o delle dubbi e domande fateci sapere!
Seguiteci anche su Facebook, Google Plus, Tumblr e Twitter, per restare sempre in contatto con noi e con le nostre guide.
Web Developer da oltre 10 anni e Blogger. Ogni giorno si applica al perfezionamento e all’apprendimento in campo informatico, di comunicazione e di marketing.