Несколько примеров использования функции wp_remote_get() для подключения к API Инстаграм

Мои посты про Инстаграм возможно всех уже достали, ну думаю, что на ближайшее время этот будет последним. Кроме того, этот пост содержит практические примеры использования функции wp_remote_get(), так что это пост и про WordPress тоже.

Ранее я уже писал посты про подключение к API Инстаграм через jQuery и через PHP, но мы, как-никак используем WordPress и почему бы не использовать стандартные функции движка, к тому же юзаются они ну очень просто.

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

Запросы API Инстаграм доступные для использования в песочнице.

Напоследок добавлю, что как ни крути, нам всё равно нужно получать токен для подключения. К счастью делается это не трудно, нужно лишь иметь аккаунт в Инстаграм. Этот процесс довольно подробно описан здесь.

Пример 1. Получение информации профиля пользователя Инстаграм

В силу ограничений песочницы мы можем получить данные только пользователя — владельца токена.

// Сразу подключаемся к API
$cn = wp_remote_get( "https://api.instagram.com/v1/users/self/?access_token=ТОКЕН_УКАЗЫВАЕМ_ЗДЕСЬ" );
 
// Ответ Инстаграма закодирован в JSON, так что раскодируем его
$instagram = json_decode( wp_remote_retrieve_body( $cn ) );
 
// Ну и если ответ сервера 200 OK, то можно вывести что-нибудь
if( wp_remote_retrieve_response_code( $cn ) == 200 ) {
	echo '
	<img src="' . $instagram->data->profile_picture . '" />
	<p>Имя пользователя: ' . $instagram->data->username . '</p>
	<p>ID: ' . $instagram->data->id . '</p>
	<p>Био: ' . $instagram->data->bio . '</p>
	<p>Сайт: ' . $instagram->data->website . '</p>
	<p>Полное имя: ' . $instagram->data->full_name . '</p>
	<p>Публикаций: ' . $instagram->data->counts->media . '</p>
	<p>Подписчиков: ' . $instagram->data->counts->followed_by . '</p>
	<p>Подписок: ' . $instagram->data->counts->follows . '</p>
	';
}

Проще простого, верно ведь?

Пример 2. Получение и вывод фото / видео конкретного пользователя Инстаграм

Песочница ставит ограничения и тут, а именно — можно получить публикации только пользователя — владельца токена, кроме того, не более 20 последних постов.

$cn = wp_remote_get( "https://api.instagram.com/v1/users/self/media/recent/?access_token=ТОКЕН_УКАЗЫВАЕМ_ЗДЕСЬ" );
 
// Ответ Инстаграма закодирован в JSON, так что раскодируем его
$instagram = json_decode( wp_remote_retrieve_body( $cn ) );
 
// Ну и если ответ сервера 200 OK, то можно вывести что-нибудь
if( wp_remote_retrieve_response_code( $cn ) == 200 ) {
 
	foreach( $instagram->data as $photo ) {
 
		echo '<a href="' . $photo->link . '" title="' . $photo->caption->text . '">
			<img src="' . $photo->images->standard_resolution->url . '" />
		      </a>';
		// все доступные параметры можно найти в документации Инстаграм https://www.instagram.com/developer/endpoints/users/#get_users_media_recent
		// либо print_r( $photo );
 
	}
 
}

Тоже мега-простой пример, разве нет?

Можно ли сейчас получить фото из Инстаграм по тегу или по местоположению?

Да, но для этого нужно отправлять своё приложение на одобрение использования public_content. Пока что процент отказа очень высок и мало кому удалось получить этот самый public_content.

Также хочу обратить ваше внимание на одну незначительную деталь. Песочница ограничивает результаты API последними 20 медиа пользователя. То есть по сути вы можете использовать ендпойнты для получения фото по тегу и локации, и у вас получится это сделать, только если в 20-ку последних медиа владельца токена входят фото/видео с заданным тегом или локацией.

Но есть и ещё один вариант — попробуйте мой плагин, у которого нет ограничений на вывод медиа других пользователей Инстаграм, нет ограничений на вывод фото по тегу или даже по нескольким тегам одновременно.

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Привет, ну либо через Javascript, либо через save_post хук, скорее второе.

  • Дмитрий: Миша, а возможно ли задать условие, что если существует meta_key, то соответствующая таксономия будет нажата в метабоксе...

  • Дмитрий: Спасибо за подсказку. Получилось передать сразу нужный meta_key через value в hidden input.

  • Артем: Вот про сей хук я запамятовал)) Спасибо!

  • Миша: Думаю, что $mail_2 - пустая переменная по той простой причине, что $post->ID не существует. Глобальная переменная $po...