Выводим фото / видео из Инстаграм через PHP, без использования классов, с поддержкой Fancybox/Lightbox

Вообще конечно, такие просмотрщики, как Fancybox, можно спокойно прикрутить и в том случае, если вы выводите фото из Instagram через JavaScript.

Для меня же метод вывода через JavaScript имеет два существенных преимущества:

  • Асинхронные запросы в JavaScript не мешают быстрой загрузке страниц вашего сайта, в то же время наоборот, подкючение к API через cURL (PHP метод) может увеличить время ответа сервера.
  • Если вы поставите кэширование (например плагин WP Super Cache для WP), то в PHP-способе новые фото не будут выводиться сразу же.

В то же время есть такие случаи, когда подходит только PHP-метод подключения к API, иначе зачем бы я вообще стал его рассматривать.

Подготовка. Функция подключения к API Инстаграм через cURL.

В первую очередь создадим функцию, которая будет подключаться к API Инстаграм и возвращать результат. Она вполне подойдёт для любых GET-запросов к Instagram API.

function instagram_api_podkluchenie( $link ){
	$c_podkl = curl_init(); // инициализируем соединение
	curl_setopt($c_podkl, CURLOPT_URL, $link); // к этому URL будем подключаться
	curl_setopt($c_podkl, CURLOPT_RETURNTRANSFER, 1); // возвращать, а не распечатываь результат
	curl_setopt($c_podkl, CURLOPT_TIMEOUT, 20); // таймаут
	$json_result = curl_exec($c_podkl); // подключаемся, получаем данные
	curl_close($c_podkl); // закрываем соединение
	return json_decode( $json_result ); // декодируем из json и возвращаем результат
}

Добавьте её куда-нибудь в код своего сайта. Если это WordPress, то в файл functions.php текущей темы. Она понадобится нам во всех примерах, как средство подключения к API через cURL

А теперь перейдем к самим примерам.

Готовые к использованию примеры

И ещё одно, в каждом примере вам понадобится Access Token, о том, где его взять, я уже писал здесь.

Кроме того, если созданное вами приложение находится в песочнице (Sandbox Mode), то будут действовать ещё некоторые ограничения, вы сможете только:

  1. выводить информацию о пользователе, которому принадлежит Access Token (в этой статье мы как раз получали данные о количестве подписчиков, подписок и т.д.)
  2. Выводить не более 20 последних фото/видео пользователя, которому принадлежит токен.
  3. Вы можете использовать запросы и для вывода по тегу, но имейте ввиду, что результаты будут ограничены пунктом 2.

Если такие ограничения вас никак не устраивают, то статью дальше можете не читать.

По ID пользователя

Я не стал усложнять код и сделал вывод результатов в виде: ссылка (тег <a>) +картинка (тег <img>).

Так как согласно заголовку поста, мы хотим использовать последующие примеры в связке с лайтбоксом (например Fancybox), то я сделал для этого следующее:

  • В атрибуте href указана не ссылка на сам пост в Инстаграм $post->link, а ссылка на самое большое разрешение изображения, в Инстаграм это 612х612, $post->images->standard_resolution->url
  • В качестве же изображения, которое находится внутри ссылки используется наименьшее разрешение 150х150 $post->images->thumbnail->url.
  • Каждой ссылке присвоен класс fancybox, но вы конечно можете использовать и другой селектор для инициализации лайтбокса.
$access = 'ваш токен';
$user_id = '1362124742'; // если приложение в песочнице, то проще тут указать "self"
$result = instagram_api_podkluchenie("https://api.instagram.com/v1/users/" . $user_id . "/media/recent?access_token=" . $access);
 
foreach ($result->data as $post) {
	echo '<a id="insta-' . $post->id . '" href="' . $post->images->standard_resolution->url . '" class="fancybox ' . $post->filter . '"><img src="' . $post->images->thumbnail->url . '" /></a>';
}
// полностью весь возвращаемый результат можно просмотреть при помощи print_r( $result ); или на сайте API Инстаграм

Вывод постов фото / видео по хэштегу

$access = 'укажите ваш токен';
$metka = 'wordpress'; // ваш хэштег
$result = instagram_api_podkluchenie("https://api.instagram.com/v1/tags/" . $metka . "/media/recent?access_token=" . $access);
 
//print_r( $result );
foreach ($result->data as $post) {
	echo '<a id="insta-' . $post->id . '" href="' . $post->images->standard_resolution->url . '" class="fancybox ' . $post->filter . '"><img src="' . $post->images->thumbnail->url . '" /></a>';
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал