У цій статті ми навчимося зчитувати дані медіа-менеджера через API WordPress. Відмінною рисою сьогоднішньої статті буде те, що для отримання даних ми будемо використовувати нативні CURL-функції PHP, а не WP-обгортку “wp_remote_get(...)”.
Запит до URL “/wp-json/wp/v2/media/” не вимагає жодної авторизації (так само, як і при отриманні постів через API). Нам достатньо просто зробити GET-запит до “мій-сайт/wp-json/wp/v2/media/” та отримати відповідь у форматі JSON.
У цьому можна переконатися навіть без PHP-коду — просто введіть зазначений URL у адресний рядок браузера. Сайт поверне вам дані у форматі JSON. Якщо ви перевіряєте в Firefox, дані відобразяться в зручному для читання вигляді. Якщо ж ви користуєтесь Chrome — рекомендую встановити розширення “JSONView” або подібне. Іншими браузерами я не користуюсь.
Повернімось до нашого коду. Нижче наведено повний робочий приклад:
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => мой-сайт/wp-json/wp/v2/media/',
CURLOPT_RETURNTRANSFER => true,
]);
$exec = curl_exec($ch);
$getinfo_ar = curl_getinfo($ch);
if(empty($getinfo_ar['http_code']) || $getinfo_ar['http_code'] != 200)
{
echo 'Failed to retrieve data';
die;
}
$json_ar = json_decode($exec, true);
echo "<pre dir='ltr'>\$json_ar = ";print_r($json_ar); echo "</pre>";
curl_close($ch);Умовно код можна поділити на три частини:
- Отримання даних
- Перевірка
- Відображення
Отримання даних
$ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => мой-сайт/wp-json/wp/v2/media/', CURLOPT_RETURNTRANSFER => true, ]); $exec = curl_exec($ch); $getinfo_ar = curl_getinfo($ch);
За допомогою набору функцій CURL ми формуємо запит для отримання даних через API WordPress. Функція “curl_setopt_array(...)” дозволяє зручно налаштувати параметри запиту через асоціативний масив.
Результат виконання CURL-запиту можна отримати за допомогою двох функцій:
curl_exec(...) — тіло відповіді
curl_getinfo(...) — інформація про заголовки відповіді
Перевірка отриманих даних
if(empty($getinfo_ar['http_code']) || $getinfo_ar['http_code'] != 200)
{
echo 'Failed to retrieve data';
die;
}Перевірка тут досить проста: якщо відсутній код відповіді або він не дорівнює 200 (тобто OK), значить щось пішло не так — виводимо повідомлення або генеруємо виняток.
Відображення даних
У нашому випадку ми обмежимось простим тестовим виводом на екран.
$json_ar = json_decode($exec, true); echo "<pre dir='ltr'>\$json_ar = ";print_r($json_ar); echo "</pre>"; curl_close($ch);
І в кінці закриваємо CURL-з'єднання.
