Использование WordPress для кеширования ленты Instagram - PullRequest
1 голос
/ 28 февраля 2020

У меня на сайте есть лента Instagram:

$instagram_user_id = 'MY USER ID';
$instagram_access_token = 'MY ACCESS TOKEN';

<?php

function fetchData($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

$result = fetchData("https://api.instagram.com/v1/users/$instagram_user_id/media/recent/?access_token=$instagram_access_token&count=9");
$result = json_decode($result); ?>

<?php foreach ($result->data as $insta) { 

echo '<a target="blank" href="'.$insta->link.'">';

$img = $insta->images->low_resolution->url;
?>

<div style="background-image: url('<?php echo $img; ?>'); background-size: cover; background-position: center center;"></div></a>

<?php } ?>

Это работает хорошо, но я недавно обнаружил, что Instagram ограничивает 200 запросов в час.

Мой вопрос - могу ли я кэшировать эти результаты?

Я пытался использовать set_transient, но безуспешно.

Редактировать: вот как я пытаюсь использовать переходный процесс:

<?php

$cached_result = get_transient('transient');

//if transient is not set
if(empty($cached_result)) { 

function fetchData($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

$result = fetchData("https://api.instagram.com/v1/users/$instagram_user_id/media/recent/?access_token=$instagram_access_token&count=9");
$result = json_decode($result);

//set the transient
set_transient('transient', $cached_result, 60*60*6);

}
//tell me if transient is set
if(!empty($cached_result)) {

echo 'full';

} 

?>

Но не кажется, что переходный процесс установлен, он вызывает каждый раз.

1 Ответ

1 голос
/ 01 марта 2020

U Посмотрите на этот код, который вы используете.

set_transient('transient', $cached_result, 60*60*6);

Сначала вы должны сохранить данные в переменной cached_result, а затем установить их. Первая строка кода, которую вы вызываете get_transient, но нет значения для временного ключа только потому, что значение не установлено.

Спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...