В этой статье, мы научимся считывать данные медиа менеджера по API Вордпресс. Отличительной чертой сегодняшней статьи будет то, что для получения данных, мы будем использовать нативные CURL ф-и PHP а не WP обертку “wp_remote_get(...)”.
Запрос на URL “/wp-json/wp/v2/media/” не требует какой либо авторизации (так же как и при получении постов по АПИ). Нам достаточно лишь выполнить 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 'Не удалось получить данные'; 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 функций мы формируем запрос на получение данные по АПИ с WordPress. Используя “curl_setopt_array(...)”, через второй параметр мы можем полностью настроить наш запрос (что весьма удобно).
Результат выполнения CRUL запроса мы можем получить через две ф-и:
curl_exec(...) - тело ответа
curl_getinfo(...) - информация о заголовках
Проверка полученных данных
if(empty($getinfo_ar['http_code']) || $getinfo_ar['http_code'] != 200) { echo 'Не удалось получить данные'; 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 соединение.