2011-04-30 70 views
3

我想使用JSONP請求將最新的flickr照片和twitter狀態更新包含在wordpress側欄或頁腳中。問題當然是每個頁面重新加載都會執行一個新的Ajax調用,我相信Twitter API有使用限制。包括每個頁面加載的twitter/flickr api調用(WordPress)

我正在考慮什麼跨瀏覽器的數據持久性選項,我用JavaScript和我能想到的最好的是餅乾。

將ajax結果存儲在cookie中(設置過期日期,我不經常更新我的twitter/Flickr)。成爲基於JavaScript的Twitter和Flickr api電話的最佳解決方案?

感謝

回答

1

基於JavaScript的Twitter和Flickr API調用的最佳解決方案使用WordPress的時候是使用WordPress Transient API。 Transient API是一種內置於WordPress中的持久性緩存方法,用於緩存頻繁更改的項目。您可以設置緩存過期時間,WordPress將首先檢查數據庫中的瞬態數據,如果它返回false,它將使用json調用返回項目。

以下是使用瞬態和簡碼存儲用戶最近推文的示例。下面的代碼來自Aaron Jorbin Twitter瞬變插件

function twitter_status($atts){ 
    extract(shortcode_atts(array(
    'screenname' => '', 
    'count' => 1 
    ), $atts)); 
    $transient = "$screenname"."_$count"."_twitter_status"; 
    $statuses = get_transient($transient); 
    if ($statuses == true ) 
    { 
     return $statuses; 
    } 
    elseif ($screenname != false) 
    { 
     $site = "http://twitter.com/statuses/user_timeline.json?screen_name=$screenname&count=$count"; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_URL, $site); 
     $result = curl_exec($ch); 
     $tweets = json_decode($result); 
     ob_start(); 
     foreach ((array) $tweets as $tweet){ 
      $tweetcontent = $tweet->text; 
      $newcontent = preg_replace('%@([^\s]*)%', "<a href="http://twitter.com/\\1">@\\1</a>", $tweetcontent); 
      echo "<div class="twitter_shortcode"><p> 
      <img class="twitter_shortcode_image" src="&quot;.esc_url($tweet-&gt;user-&gt;profile_image_url).&quot;"><span class="twitter_shotcode_username"><a href="http://twitter.com/&quot;.$tweet-&gt;user-&gt;screen_name.&quot;">".$tweet-&gt;user-&gt;screen_name."</a>&nbsp;—&nbsp;</span>$newcontent</p> 
      </div>"; 

     } 
     $tweet_display = ob_get_clean(); 
     set_transient($transient, $tweet_display, 120); 
     return $tweet_display; 
    } 
    else 
    { 
     return false; 
    } 
} 

add_shortcode('twitter_status', 'twitter_status');