Dorești să afișezi pe blogul tău WordPress numărul de abonați la feed-ul RSS, dar fără să folosești insignele grafice standard oferite de FeedBurner? Afișarea numărului în format text simplu îți oferă libertate totală de stilizare prin CSS și ajută la încărcarea mai rapidă a paginii.
De ce să eviți insignele grafice implicite?
Insignele clasice (cunoscute sub denumirea de FeedBurner FeedCount Chicklet) erau imagini statice sau generate dinamic care adăugau o cerere HTTP suplimentară către un server terț și aveau un design rigid ce nu se potrivea întotdeauna cu paleta de culori a blogului. Extrăgând doar numărul brut de abonați prin intermediul API-ului, îl poți integra în orice element HTML și îl poți stiliza după bunul plac.
Preluarea numărului de abonați prin cURL și XML
Folosind extensia PHP cURL și biblioteca SimpleXMLElement, poți interoga serviciul FeedBurner Awareness API pentru a extrage valoarea parametrului circulation (numărul de cititori activi). Iată codul PHP necesar:
<?php
// Specifică ID-ul tău FeedBurner
$feedburner_id = 'your-feedburner-id';
$api_url = 'http://api.feedburner.com/awareness/1.0/GetFeedData?uri=' . urlencode( $feedburner_id );
// Inițializăm sesiunea cURL
$ch = curl_init();
// Setăm opțiunile cURL
curl_setopt( $ch, CURLOPT_URL, $api_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_TIMEOUT, 5 );
// Executăm cererea HTTP
$data = curl_exec( $ch );
// Închidem conexiunea cURL
curl_close( $ch );
if ( $data ) {
try {
$xml = new SimpleXMLElement( $data );
$fb_count = (string) $xml->feed->entry['circulation'];
echo esc_html( $fb_count );
} catch ( Exception $e ) {
echo '0';
}
}
?>
Optimizarea performanței prin salvarea în cache
Nu este recomandat să rulezi o cerere cURL către un server extern la fiecare vizită pe blog, deoarece acest lucru ar încetini viteza de încărcare a paginilor. În WordPress, poți memora rezultatul în memoria cache folosind Transients API pentru o perioadă determinată (de exemplu, 12 ore):
function dexblog_get_feedburner_count( $feed_id ) {
$cache_key = 'fb_subscribers_count';
$count = get_transient( $cache_key );
if ( false === $count ) {
$url = 'http://api.feedburner.com/awareness/1.0/GetFeedData?uri=' . urlencode( $feed_id );
$response = wp_remote_get( $url, array( 'timeout' => 5 ) );
if ( ! is_wp_error( $response ) && 200 === wp_remote_retrieve_response_code( $response ) ) {
$body = wp_remote_retrieve_body( $response );
try {
$xml = new SimpleXMLElement( $body );
$count = (int) $xml->feed->entry['circulation'];
set_transient( $cache_key, $count, 12 * HOUR_IN_SECONDS );
} catch ( Exception $e ) {
$count = 0;
}
} else {
$count = 0;
}
}
return $count;
}
Exemplu de afișare și stilizare
Odată extras numărul, îl poți afișa în șablonul temei (de pildă în sidebar.php) într-un mod atrăgător:
<div class="rss-counter">
<span class="count"><?php echo dexblog_get_feedburner_count( 'id-ul-tau' ); ?></span>
<span class="label">cititori abonați prin RSS</span>
</div>