ݺߣ

ݺߣShare a Scribd company logo
HTTP API
Ваш
сервер
Другой
сервер
Ваш
сервер
Не всегда вам помогут готовые плагины WordPress
api.fixer.io/latest
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
wp_remote_get()
$r = wp_remote_get('http://api.fixer.io/latest');
print_r( $r );
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
$r = wp_remote_get( 'http://api.fixer.io/latest' );
echo $r['body'];
$r = wp_remote_get( 'http://api.fixer.io/latest' );
echo wp_remote_retrieve_body( $r );
{"base":"EUR","date":"2017-10-09","rates":
{"AUD":1.5142,"BGN":1.9558,"BRL":
3.7168,"CAD":1.4731,"CHF":1.1497,"CNY":
7.7788,"CZK":25.893,"DKK":7.443,"GBP":
0.89195,"HKD":9.1685,"HRK":7.5025,"HUF":
312.32,"IDR":15897.0,"ILS":4.1206,"INR":
76.762,"JPY":132.36,"KRW":1343.1,"MXN":
21.884,"MYR":4.9709,"NOK":9.3788,"NZD":
1.6588,"PHP":60.189,"PLN":4.3077,"RON":
4.5754,"RUB":68.538,"SEK":9.5348,"SGD":
1.6013,"THB":39.214,"TRY":4.3636,"USD":
1.1746,"ZAR":16.199}}
$r = wp_remote_get( 'http://api.fixer.io/latest' );
$body = json_decode( wp_remote_retrieve_body( $r ) );
echo $body->rates->USD;
Миша Рудрастых: Введение в HTTP API WordPress
Не всегда получится
работать с API без
авторизации
Access Token
1. Отправиться на instagram.com/developer и создать
приложение
2. Используя Client ID и Client Secret и какой-нибудь
инструмент, например https://rudrastyh.com/tools/access-token,
создать Access Token
Следующий универсальный
шаг - работа с
документацией к API
https://www.instagram.com/developer/endpoints
www.instagram.com/developer/endpoints
Мы можем смело использовать любые из них, которые не
требуют scope
Мы можем смело использовать любые из них, которые не
требуют scope
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
$me = wp_remote_get('https://api.instagram.com/v1/users/
self/?access_token=ACCESS-TOKEN');
$body = json_decode( wp_remote_retrieve_body( $me ) );
// документация либо print_r() помогут узнать все
параметры
echo '<img src=/slideshow/http-api-wordpress/80859802/"& . $body->data->profile_picture . '" />';
$me = wp_remote_get('https://api.instagram.com/v1/users/self/?
access_token=ACCESS-TOKEN');
$body = json_decode( wp_remote_retrieve_body( $me ) );
if( wp_remote_retrieve_response_code( $me ) == 200 ):
echo '<img src=/slideshow/http-api-wordpress/80859802/"& . $body->data->profile_picture . '" />';
else:
echo 'Что-то пошло не так';
endif;
Транзиты
get_transient()
set_transient()
if( false == $img = get_transient( 'privet_meetup' ) ) {
$me = wp_remote_get('https://api.instagram.com/v1/users/self/?
access_token=ACCESS-TOKEN');
$body = json_decode( wp_remote_retrieve_body( $me ) );
$img = $body->data->profile_picture;
set_transient( 'privet_meetup', $img, 60 );
}
echo '<img src=/slideshow/http-api-wordpress/80859802/"& . $img . '" />';
wp_remote_post()
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
Basic Аутентификация
$api_key = 'КЛЮЧ API';
$email = 'Емайл';
$args = array(
'method' => 'PUT',
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( 'user:' . $api_key )
),
'body' => json_encode( array(
'email_address' => $email,
'status' => 'subscribed'
) )
);
$response = wp_remote_post( 'https://' . substr( $api_key,strpos( $api_key,'-')+1) .
'.api.mailchimp.com/3.0/lists/ID_листа/members/' . md5( strtolower( $email ) ), $args );
$body = json_decode( wp_remote_retrieve_body( $response ) );
if ( $body->status == 'subscribed' ) {
echo 'Подписка оформлена успешно.';
}
Миша Рудрастых: Введение в HTTP API WordPress
$api_key = 'КЛЮЧ API';
$email = 'Емайл';
$args = array(
'method' => 'PUT',
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( 'user:' . $api_key )
),
'body' => json_encode( array(
'email_address' => $email,
'status' => 'subscribed'
) )
);
$response = wp_remote_post( 'https://' . substr( $api_key,strpos( $api_key,'-')+1) .
'.api.mailchimp.com/3.0/lists/ID_листа/members/' . md5( strtolower( $email ) ), $args );
$body = json_decode( wp_remote_retrieve_body( $response ) );
if ( $body->status == 'subscribed' ) {
echo 'Подписка оформлена успешно.';
}
us8.api.mailchimp.com/3.0/
us10.api.mailchimp.com/3.0/
substr( $api_key,strpos( $api_key,'-')+1) . '.api.mailchimp.com/3.0/
Thanks for listening
Any questions?
vk.com/truemisha

More Related Content

What's hot (17)

Общая архитектура Yii2
Общая архитектура Yii2Общая архитектура Yii2
Общая архитектура Yii2
Paul Klimov
Ф۾лософия
Ф۾лософияФ۾лософия
Ф۾лософия
Paul Klimov
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
Noveo
Алексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать LaravelАлексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать Laravel
Oleg Poludnenko
Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
Anatoly Sharifulin
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
private_face
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
drupalconf
plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)
ygoltsev
Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2
Paul Klimov
Юрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWЮрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWW
Positive Hack Days
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
Paul Klimov
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2
Paul Klimov
PHP basic
PHP basicPHP basic
PHP basic
Noveo
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
private_face
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Ontico
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16
Anatoly Sharifulin
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
Общая архитектура Yii2
Общая архитектура Yii2Общая архитектура Yii2
Общая архитектура Yii2
Paul Klimov
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
Noveo
Алексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать LaravelАлексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать Laravel
Oleg Poludnenko
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
private_face
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
drupalconf
plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)
ygoltsev
Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2
Paul Klimov
Юрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWЮрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWW
Positive Hack Days
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
Paul Klimov
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2
Paul Klimov
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
private_face
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Ontico
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16
Anatoly Sharifulin
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2

Similar to Миша Рудрастых: Введение в HTTP API WordPress (20)

Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
Ilya Chesnokov
DSLs в Perl
DSLs в PerlDSLs в Perl
DSLs в Perl
Ruslan Zakirov
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
DrupalCampDN
Perl – жив?!
Perl – жив?!Perl – жив?!
Perl – жив?!
Anatoly Sharifulin
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
Andrew Shitov
Form api в drupal 7
Form api в drupal 7Form api в drupal 7
Form api в drupal 7
dimateus
Nginx.pm
Nginx.pmNginx.pm
Nginx.pm
Ilya Zelenchuk
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин ИльяDUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
it-people
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
Media Gorod
Psgi app
Psgi appPsgi app
Psgi app
und3f
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
Alexander Makarov
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
Ilya Chesnokov
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
DrupalCampDN
Form api в drupal 7
Form api в drupal 7Form api в drupal 7
Form api в drupal 7
dimateus
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин ИльяDUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
it-people
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
Media Gorod

More from Ruslan Begaliev (13)

Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...
Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...
Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...
Ruslan Begaliev
Анатолий Юмашев: Сайт для бизнеса на WordPress в 2017 году
Анатолий Юмашев: Сайт для бизнеса на WordPress в 2017 годуАнатолий Юмашев: Сайт для бизнеса на WordPress в 2017 году
Анатолий Юмашев: Сайт для бизнеса на WordPress в 2017 году
Ruslan Begaliev
Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?
Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?
Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?
Ruslan Begaliev
Анна Ладошкина: Проект Guthenberg: революция в консоли
Анна Ладошкина: Проект Guthenberg: революция в консолиАнна Ладошкина: Проект Guthenberg: революция в консоли
Анна Ладошкина: Проект Guthenberg: революция в консоли
Ruslan Begaliev
Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress?
Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress? Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress?
Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress?
Ruslan Begaliev
Безопасность и масштабируемость данных
Безопасность и масштабируемость данныхБезопасность и масштабируемость данных
Безопасность и масштабируемость данных
Ruslan Begaliev
Что вам нужно знать, когда вы покидаете виртуальный хостинг?
Что вам нужно знать, когда вы покидаете виртуальный хостинг? Что вам нужно знать, когда вы покидаете виртуальный хостинг?
Что вам нужно знать, когда вы покидаете виртуальный хостинг?
Ruslan Begaliev
Личный бренд и его коммуникация через сайт.
Личный бренд и его коммуникация через сайт. Личный бренд и его коммуникация через сайт.
Личный бренд и его коммуникация через сайт.
Ruslan Begaliev
Бот для Telegram и сайт на WordPress — смогут ли ужиться вместе?
Бот для Telegram и сайт  на WordPress — смогут  ли ужиться вместе?Бот для Telegram и сайт  на WordPress — смогут  ли ужиться вместе?
Бот для Telegram и сайт на WordPress — смогут ли ужиться вместе?
Ruslan Begaliev
A/B тестирование на WordPress. Конверсия не только для лендингов
A/B тестирование на WordPress. Конверсия не только для лендинговA/B тестирование на WordPress. Конверсия не только для лендингов
A/B тестирование на WordPress. Конверсия не только для лендингов
Ruslan Begaliev
Google Tag Manager: Что это и с чем его едят.
Google Tag Manager: Что это и с чем его едят.Google Tag Manager: Что это и с чем его едят.
Google Tag Manager: Что это и с чем его едят.
Ruslan Begaliev
Трудности перевода: как построить мультиязычный сайт на WordPress
Трудности перевода: как построить мультиязычный сайт на WordPressТрудности перевода: как построить мультиязычный сайт на WordPress
Трудности перевода: как построить мультиязычный сайт на WordPress
Ruslan Begaliev
Как я работал на MODx и как перешел на WordPress
Как я работал на MODx и как перешел на WordPressКак я работал на MODx и как перешел на WordPress
Как я работал на MODx и как перешел на WordPress
Ruslan Begaliev
Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...
Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...
Никита Селиванов: 8 правил эффективного взаимодействия с подрядчиком при созд...
Ruslan Begaliev
Анатолий Юмашев: Сайт для бизнеса на WordPress в 2017 году
Анатолий Юмашев: Сайт для бизнеса на WordPress в 2017 годуАнатолий Юмашев: Сайт для бизнеса на WordPress в 2017 году
Анатолий Юмашев: Сайт для бизнеса на WordPress в 2017 году
Ruslan Begaliev
Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?
Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?
Константин Хомченко: Как раскрыть маркетинговый потенциал Wordpress?
Ruslan Begaliev
Анна Ладошкина: Проект Guthenberg: революция в консоли
Анна Ладошкина: Проект Guthenberg: революция в консолиАнна Ладошкина: Проект Guthenberg: революция в консоли
Анна Ладошкина: Проект Guthenberg: революция в консоли
Ruslan Begaliev
Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress?
Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress? Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress?
Каким будет SEO в начале 2017 года и как нам в этом поможет Wordpress?
Ruslan Begaliev
Безопасность и масштабируемость данных
Безопасность и масштабируемость данныхБезопасность и масштабируемость данных
Безопасность и масштабируемость данных
Ruslan Begaliev
Что вам нужно знать, когда вы покидаете виртуальный хостинг?
Что вам нужно знать, когда вы покидаете виртуальный хостинг? Что вам нужно знать, когда вы покидаете виртуальный хостинг?
Что вам нужно знать, когда вы покидаете виртуальный хостинг?
Ruslan Begaliev
Личный бренд и его коммуникация через сайт.
Личный бренд и его коммуникация через сайт. Личный бренд и его коммуникация через сайт.
Личный бренд и его коммуникация через сайт.
Ruslan Begaliev
Бот для Telegram и сайт на WordPress — смогут ли ужиться вместе?
Бот для Telegram и сайт  на WordPress — смогут  ли ужиться вместе?Бот для Telegram и сайт  на WordPress — смогут  ли ужиться вместе?
Бот для Telegram и сайт на WordPress — смогут ли ужиться вместе?
Ruslan Begaliev
A/B тестирование на WordPress. Конверсия не только для лендингов
A/B тестирование на WordPress. Конверсия не только для лендинговA/B тестирование на WordPress. Конверсия не только для лендингов
A/B тестирование на WordPress. Конверсия не только для лендингов
Ruslan Begaliev
Google Tag Manager: Что это и с чем его едят.
Google Tag Manager: Что это и с чем его едят.Google Tag Manager: Что это и с чем его едят.
Google Tag Manager: Что это и с чем его едят.
Ruslan Begaliev
Трудности перевода: как построить мультиязычный сайт на WordPress
Трудности перевода: как построить мультиязычный сайт на WordPressТрудности перевода: как построить мультиязычный сайт на WordPress
Трудности перевода: как построить мультиязычный сайт на WordPress
Ruslan Begaliev
Как я работал на MODx и как перешел на WordPress
Как я работал на MODx и как перешел на WordPressКак я работал на MODx и как перешел на WordPress
Как я работал на MODx и как перешел на WordPress
Ruslan Begaliev

Миша Рудрастых: Введение в HTTP API WordPress