Мои посты про Инстаграм возможно всех уже достали, ну думаю, что на ближайшее время этот будет последним. Кроме того, этот пост содержит практические примеры использования функции wp_remote_get()
, так что это пост и про WordPress тоже.
Ранее я уже писал посты про подключение к API Инстаграм через jQuery и через PHP, но мы, как-никак используем WordPress и почему бы не использовать стандартные функции движка, к тому же юзаются они ну очень просто.
Итак, уже из названия функции понятно, что она использует HTTP GET метод, а это значит, что с её помощью мы можем подключиться только к тем ендпойнтам API, которые поддерживают GET-запросы, но так как сейчас я не хочу рассматривать примеры, которые требуют аппрув для приложения, то я вообще ограничусь лишь двумя методами, на скриншоте ниже наглядно видно, о чём я говорю.
Напоследок добавлю, что как ни крути, нам всё равно нужно получать токен для подключения. К счастью делается это не трудно, нужно лишь иметь аккаунт в Инстаграм. Этот процесс довольно подробно описан здесь.
Пример 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-ку последних медиа владельца токена входят фото/видео с заданным тегом или локацией.