FeedBurner è uno dei servizi di feed più popolari sul Web. In questo articolo vedremo come implementare la visualizzazione dei feed di FeedBurner utilizzando uno shortcode di WordPress. Vediamo insieme i dettagli dell'implementazione.
Per prima cosa definiamo, nel file functions.php
del nostro tema, una funzione per effettuare il parsing del feed remoto. Questa funzione accetta due parametri, ossia l'URL del feed e il numero di voci da visualizzare. La funzione ha anche una gestione degli errori tale che questi ultimi vengono gestiti internamente ed inviati tramite e-mail al proprietario del sito per informarlo che il feed non risponde:
function fetch_feedburner_feed($url, $limit = 3) {
libxml_use_internal_errors(true);
$feed = simplexml_load_file($url);
if(!$feed) {
$message = '';
foreach(libxml_get_errors() as $error) {
$message .= $error->message . "\n";
}
mail('you@sito.it', '[Sito]: errori feed', $message, 'From: dev@sito.it' . "\r\n");
return '<p>Oops, il feed non risponde...</p>' . "\n";
} else {
$html = '<div class="feed">' . "\n";
$i = -1;
$items = $feed->channel->item;
$items_no = $limit - 1;
do {
$i++;
$title = $items[$i]->title;
$pub_date = $items[$i]->pubDate;
$description = trim($items[$i]->description);
$desc = '';
if(preg_match('/^<p><img[^>]*\/>/', $description)) {
$desc = preg_replace('/<p><img[^>]*\/>/', '<p>', $description);
}
$desc_excerpt = preg_match('/^<p>.+<\/p>/', $desc, $matches);
$date = strftime('%d-%m-%Y', strtotime($pub_date));
$links = $items[$i]->children('http://rssnamespace.org/feedburner/ext/1.0');
$link = $links->origLink;
$html .= '<div class="item">' . "\n";
$html .= '<h2><a href="' . $link . '">' . $title . '</a></h2>' . "\n";
$html .= '<div class="item-date"><small>' . $date . '</small></div>' . "\n";
$html .= $matches[0];
$html .= '</div>' . "\n";
} while($i < $items_no);
$html .= '</div>' . "\n";
return $html;
}
}
Quindi definiamo la funzione che gestirà lo shortcode:
function feedburner_shortcode($atts) {
extract( shortcode_atts( array(
'url' => 'http://feeds.feedburner.com/blogspot/onwebdev/',
'limit' => 3
), $atts ) );
$content = fetch_feedburner_feed($url, $limit);
return $content;
}
add_shortcode('feedburner', 'feedburner_shortcode');
Ora possiamo usare lo shortcode [feedburner]
per esempio come [feedburner url="http://feeds.feedburner.com/tuofeed/" limit="6"]
.