Gestione Feed RSS Custom su WordPress

Oggi parleremo di gestione Feed RSS custom su WordPress, creeremo con pochi e semplici passaggi dei Feed personalizzati da poter ridistribuire, e offrire come servizio sul nostro sito web.

Gestione Feed RSS Custom su WordPress

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.



Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram