Интеграция Instagram и вывод фотографий на странице в блок ACF PRO

Задача: взять последние посты из профиля Instagram и вывести их в нужный блок неограниченое количество раз

  • eye 93
  • 0

Итак, для начала первое, что вам нужно сделать — получить Access Token в Instagram. Для этого следуйте инструкциям на официальном сайте: Instagram.com/developer, а мы рассмотрим только техническую сторону реализации.
Для начала создадим произвольное поле instagram_api_token, которое можно вывести, например, на созданную страницу опций. В это поле необходимо сохранить Access Token полученный ранее.
Далее напишем функцию, с помощью которой будет осуществлять запросы к Instagram:

function rudr_instagram_api_curl_connect( $api_url ){
	$connection_c = curl_init(); // initializing
	curl_setopt( $connection_c, CURLOPT_URL, $api_url ); // API URL to connect
	curl_setopt( $connection_c, CURLOPT_RETURNTRANSFER, 1 ); // return the result, do not print
	curl_setopt( $connection_c, CURLOPT_TIMEOUT, 20 );
	$json_return = curl_exec( $connection_c ); // connect and get json data
	curl_close( $connection_c ); // close connection
	return json_decode( $json_return ); // decode and return
}

Функция принимает только 1 аргумент, и это — сформированная ссылка для доступа.
И теперь как этим пользоваться:

$access_token = get_option('instagram_api_token'); //получим наш token
if(!$access_token){
	return; //если его нет выходим
}
$user_id = "self"; // брать посты будем из нашего аккаунта
$return = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/users/" . $user_id . "/media/recent?access_token=" . $access_token); //формируем ссылку и отправляем запрос
if($return->meta->code == 400){
	echo '<div class="row"><div class="col-xs-12"><p>У вас какие-то проблемы с Instagram Token. Вернитесь в админку и проверье всё ли правильно вы ввели.</p></div></div>';
	return; //если какие-то проблемы с доступом, то выводим сообщение и выходим 
}
$desctope_posts = array_chunk($return->data, 5); // Если же у нас всё в порядке, возьмём наши записи и поделим по 5 штук в массиве (опционально)

И теперь выведем нужное нам количество записей, в нашем случае это 10 штук, следовательно нужно вывести 2 массива:

<?php $i = 0; foreach ($desctope_posts  as $posts_row) { $i++;?>

<div class="row instagram__desktop-inst">

	<div class="col-xs-12">

		<?php foreach ($posts_row  as $post) { ?>

			<a target="_blank" href="<?php echo($post->link) ?>" class="instagram__element">
				<img src="<?php echo($post->images->standard_resolution->url) ?>" alt="instagram">
			</a>

		<?php } ?>

		</div>

	</div>

<?php if($i==2){ break; } } ?>
comments powered by HyperComments

Поделиться

На вашу почту будет отправлена одноразовая ссылка на портфолио

Отправлено!

Что-то пошло не так... Попробуйте отправить позже