Включение вызовов api twitter / flickr при каждой загрузке страницы (WordPress)

Я хочу включить свои последние фотографии с flickr и обновления статуса в Twitter на боковую панель или нижний колонтитул wordpress с помощью запросов JSONP. Проблема, конечно, в том, что каждая перезагрузка страницы будет выполнять новый вызов ajax, и я считаю, что у API Twitter есть ограничения на использование.

Я обдумывал, какие варианты сохранения данных в разных браузерах у меня были с javascript, и лучшее, что я мог придумать, - это файлы cookie.

Сохранял бы результаты ajax в файле cookie (установив срок действия на день, я не часто обновляю свой twitter / Flickr). быть лучшим решением для вызова API Twitter и Flickr на основе javascript?

Спасибо


person Globalz    schedule 30.04.2011    source источник


Ответы (1)


Лучшим решением для вызовов API Twitter и Flickr на основе javascript при использовании WordPress является использование WordPress Transient API. Transient API - это метод постоянного кеширования, встроенный в WordPress, предназначенный для кеширования часто изменяющихся элементов. Вы можете установить время истечения срока действия кеша, и WordPress сначала проверит базу данных на переходный процесс, если он вернет false, он будет использовать вызов json для возврата элемента.

Вот пример использования переходного процесса и шорткодов для хранения последних твитов пользователей. Приведенный ниже код взят из плагина Aaron Jorbin для Twitter Transients.

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');
person Chris_O    schedule 30.04.2011