基於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="".esc_url($tweet->user->profile_image_url).""><span class="twitter_shotcode_username"><a href="http://twitter.com/".$tweet->user->screen_name."">".$tweet->user->screen_name."</a> — </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');