gpt4 book ai didi

javascript - 在每个页面加载时包括 twitter/flickr api 调用 (WordPress)

转载 作者:行者123 更新时间:2023-11-29 15:50:43 25 4
gpt4 key购买 nike

我想使用 JSONP 请求将我最新的 flickr 照片和 Twitter 状态更新包含在 wordpress 侧边栏或页脚中。问题当然是每个页面重新加载都会执行一个新的 ajax 调用,我相信 Twitter api 有使用限制。

我正在考虑使用 javascript 的跨浏览器数据持久化选项,我能想到的最好的选项是 cookie。

将 ajax 结果存储在 cookie 中(将过期时间设置为一天,我不经常更新我的 twitter/Flickr)。是基于 javascript 的 Twitter 和 Flickr api 调用的最佳解决方案吗?

谢谢

最佳答案

使用 WordPress 时基于 javascript 的 Twitter 和 Flickr api 调用的最佳解决方案是使用 WordPress Transient API . Transient API 是 WordPress 内置的持久缓存方法,用于缓存经常更改的项目。您可以设置缓存过期时间,如果返回 false,WordPress 将首先检查数据库是否存在 transient ,它将使用 json 调用返回项目。

这是一个使用 transient 和短代码来存储用户最新推文的示例。以下代码来自 Aaron Jorbin Twitter Transients Plugin

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');

关于javascript - 在每个页面加载时包括 twitter/flickr api 调用 (WordPress),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5838623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com