WordPress: visualizzare i feed di FeedBurner con uno shortcode

WordPress: visualizzare i feed di FeedBurner con uno shortcode

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"].

Torna su