Статьи

WP API — Использование WordPress REST API

WP API плагин WordPress

Прежде чем обсуждать WP REST API, важно понять некоторые термины и справочную информацию. Аббревиатура API означает интерфейс прикладного программирования. API — это программный способ взаимодействия с данными приложения. Например, API Facebook дает разработчикам возможность связать всех друзей с определенным пользователем. API обычно включает в себя определенный набор инструкций, называемый документацией; чтобы любому разработчику было легко с ним работать.

REST означает представительский государственный трансферт. API может считаться RESTful, если его дизайн / архитектура соответствует определенному набору ограничений. Вы можете посмотреть, что эти ограничения здесь .

HTTP-запросы часто являются способом взаимодействия с RESTful API (HTTP-запросы также являются основным способом передачи данных через Интернет). HTTP означает протокол передачи гипертекста. Этот протокол позволяет обмениваться информацией между клиентом (сотовым телефоном, планшетом, ноутбуком, настольным компьютером и т. Д.) И сервером, доступным через Интернет, в протоколе запрос-ответ. Например, чтобы опубликовать статус на временной шкале Facebook пользователя, HTTP-запрос, нацеленный на это действие от имени этого пользователя, будет отправлен из нашего кода JavaScript в API Facebook (т. Е. На сервер Facebook). Клиент (код JavaScript) получит ответ от сервера Facebook, указывающий, что статус пользователя был успешно опубликован.

Поток HTTP-запросов

1. Клиент отправляет HTTP-запрос серверу и 2. Сервер отвечает HTTP-ответом.

В HTTP-запросе вам нужно определить тип действия, которое вы хотите выполнить с ресурсом. Есть четыре основных действия, связанные с любым запросом HTTP (обычно называемый CRUD):

  1. POST (Создать)
  2. ПОЛУЧИТЬ (Получить)
  3. PUT (обновление)
  4. УДАЛИТЬ (Удалить)

Ресурс — это объект данных, к которому можно получить доступ через HTTP-запрос. WP REST API позволяет вам «получать доступ к данным (ресурсам) вашего сайта WordPress через простой в использовании HTTP REST API». В случае самой последней версии WP API (версия 2) ресурсы включают в себя следующие 9 объектов WordPress:

  1. Сообщений
  2. страницы
  3. СМИ
  4. Опубликовать мета
  5. Опубликовать ревизии
  6. Комментарии
  7. Taxonomies
  8. условия
  9. пользователей

С WP API вы можете выполнить любое из четырех действий CRUD для любого из ресурсов вашего сайта WordPress, перечисленных выше. Например, вы можете использовать WP API для создания сообщения, получения сообщения, обновления сообщения или удаления сообщения, связанного с вашим сайтом WordPress.

Важно знать, что некоторые HTTP-запросы не требуют аутентификации (каждый может отправлять запросы и соответствующие ответы). Например, в WP API некоторые GET-запросы, такие как получение сообщений и получение мультимедиа, не требуют аутентификации. Другие запросы GET требуют аутентификации. Например, получение ревизий после публикации, получение пользователей и получение метаданных после публикации требует аутентификации. Кроме того, все действия API POST, PUT и DELETE WP требуют аутентификации.

В случае WP API аутентификация для действий на сайте (плагины или темы, установленные на сайте) обрабатываются файлами cookie. Однако, если вы не на сайте, аутентификация обрабатывается OAuth (вам необходимо загрузить плагин OAuth на ваш сайт WordPress, а затем любой внешний сайт должен пройти через обычный поток OAuth, чтобы получить доступ. Существует также базовая аутентификация плагин, который вы также можете использовать).

Создание, получение, обновление или удаление данных сайта WordPress «так же просто, как отправка HTTP-запроса».

Теперь, когда вы надеетесь лучше понять, что такое API WP, мы рассмотрим возможные варианты использования, а также расширяемость, ограничения API, инструкции по установке и пару примеров вызовов API.

Варианты использования для WP API

В презентации на WordCamp в Сан-Франциско в 2014 году Сэм Хотчкисс сказал, что WP API может привести к тому, что «плагины будут работать исключительно против REST API; без необходимости устанавливать какой-либо PHP на сервер этого сайта ». Он считает, что WP API может открыть дверь« для стороннего магазина приложений »для плагинов.

27 мая 2015 года в еженедельном выпуске WordPress Мэтт Малленвег, один из соучредителей WordPress, заявил, что API WP REST будет «огромным и революционным для разработчиков». Разработчики смогут «создавать приложения против него изолированно».

Мэтт сделал все возможное, чтобы подчеркнуть, что «это действительно потрясающе, когда оно сочетается с чем-то другим. Представьте себе будущую версию HappyTables … где они вообще не изменяют WP admin. Он просто создает пользовательский интерфейс, который взаимодействует исключительно с REST API. Вместо того, чтобы пытаться взломать все в WP admin ».

Мэтт продолжил, сказав: «Я думаю, что REST API — это начало того, что администратор WP стал лишь одним из многих клиентов для управления WordPress. Думайте о WP admin как о PHP, плюс HTML, плюс клиенты JavaScript. Я думаю, что вы увидите местных клиентов. Я думаю, вы увидите чистых клиентов JavaScript. Я думаю, вы увидите других клиентов PHP, HTML, JS; возможно, в духе HappyTables или других вертикалей, возникших вокруг WordPress ». Он считает, что это может «сделать админ [панель инструментов] чем-то, что вы можете заменить так же легко, как и темами».

Высоко Расширяемый

Возможность WP API удаленного доступа и управления ресурсами сайта WordPress сама по себе достаточно крута, но ее расширяемость делает ее еще более увлекательной. WP API предоставляет способы как добавления дополнительных полей к ресурсам, так и добавления конечных точек в API.

Добавление полей к ресурсам

Используя функцию register_api_field, вы можете добавить дополнительные поля, которые будут обновляться или извлекаться при выполнении запросов к определенным ресурсам WP API. Сначала вам нужно запустить функцию add_action и использовать rest_api_init в качестве ловушки (вы, вероятно, добавили бы этот код через плагин WordPress). Второй параметр — это имя функции, которая запускается при обнаружении ловушки. Имя функции в этом случае — register_post_custom_field. custom_field — это имя поля, post — ресурс, а get_custom_field — функция обратного вызова, которая запускается при вызове GET-запроса для ресурса post.

function register_post_custom_field() { register_api_field( 'post', 'custom_field', array( 'get_callback' => 'get_custom_field', 'update_callback' => null, 'schema' => null, ) ); } 

Затем вам нужно добавить функцию обратного вызова get_custom_field в тот же файл. В этой функции (как вы можете видеть ниже) вы получаете значение «custom_field» для ресурса post и возвращаете его. Это делается для того, чтобы при вызове для получения значения настраиваемого поля в ответ вы получали значение настраиваемого поля.

 function get_custom_field( $object, $field_name, $request ) { return get_post_meta( $object[ 'id' ], $field_name, true ); } 

Добавление конечных точек

Согласно wp-api.org, «конечные точки — это функции, доступные через API. Это могут быть такие вещи, как обновление сообщения или удаление комментария. Конечные точки выполняют определенную функцию, принимая некоторое количество параметров и возвращая данные клиенту. Маршрут — это «имя», которое вы используете для доступа к конечным точкам, используемое в URL. Маршрут может иметь несколько конечных точек, связанных с ним, и то, какое использование зависит от глагола HTTP ».

Помимо добавления полей к ресурсам по умолчанию, вы можете зарегистрировать пользовательские конечные точки, которые будут использоваться с WP API. Чтобы зарегистрировать пользовательские конечные точки, вам нужно вызвать функцию add_action и использовать хук rest_api_init и функцию register_rest_route (опять же, вы, вероятно, добавили бы этот код в плагин WordPress). В приведенном ниже примере маршрут author / {author_id} зарегистрирован и определена конечная точка GET для этого маршрута (функция обратного вызова — get_post_title_by_author).

 add_action( 'rest_api_init', function () { register_rest_route( 'myplugin/v1', '/author/(?P \d+)', array( 'methods' => 'GET', 'callback' => 'get_post_title_by_author' ) ); } );  add_action( 'rest_api_init', function () { register_rest_route( 'myplugin/v1', '/author/(?P \d+)', array( 'methods' => 'GET', 'callback' => 'get_post_title_by_author' ) ); } );  

Ниже приведена функция обратного вызова, которая вызывается при доступе к конечной точке GET через WP API. К вашему сведению, сообщения извлекаются по идентификатору автора сообщения в этой функции, и возвращается последнее название сообщения.

 function get_post_title_by_author( $data ) { $posts = get_posts( array( 'author' => $data['id'], ) ); if ( empty( $posts ) ) { return null; } return $posts[0]->post_title; } 

Возможность добавления конечных точек и полей к функциональности WP API по умолчанию упрощает разработчикам использование API WP на многих различных типах сайтов WordPress и предоставляет больше итеративных возможностей в будущем.

Ограничения

Существуют некоторые важные ограничения, которые необходимо учитывать перед началом работы с WP API. Прежде всего, любая форма Сериализированных метаданных не может быть прочитана или сохранена с использованием WP API. Создатели API говорят, что это потому, что «JSON не может хранить все форматы данных, хранящихся в PHP» (например, пользовательские объекты PHP не могут быть представлены), сериализованные данные могут также представлять частные данные, а сериализованные данные имеют проблемы с безопасностью ( в частности, уязвимости удаленного выполнения кода).

Кроме того, защищенная мета не может быть доступна или сохранена через WP API. Защищенная мета — это любое метаполе, ключ которого начинается с символа _ (подчеркивание). Эти мета поля не могут быть предоставлены через API.

Все остальные метаданные доступны только в том случае, если «аутентифицированы с разрешением на редактирование сообщения, к которому прикреплена мета». Это связано с тем, что любой пользователь может вводить мета-значения через метабокс пользовательских полей и хочет защитить конфиденциальность пользователей.

Также важно отметить, что текущая бета-версия второй версии «не гарантирует прямой совместимости с будущими бета-версиями». Они продолжают утверждать, что «хотя мы считаем, что API теперь достаточно стабилен для публичного тестирования, мы можем продолжать нарушать API в будущем. как мы улучшаем это дальше. Используйте только API в разработке и не используйте версию 2 в рабочих средах ». Вы можете использовать версию 1 WP API, но мы рекомендуем придерживаться версии 2 и просто подождать, чтобы использовать ее в производстве, пока они не скажут, что она готова для производство.

Наконец, в том же выпуске WordPress Weekly, упомянутом ранее (27 мая), Мэтт Малленвег говорил об ограничениях потока аутентификации API WP REST. Он сказал, что «сторонние интеграции из коробки не будут такими гладкими, как вы могли бы привыкнуть, например, вход в систему с Facebook или с помощью Twitter для интеграции чего-либо. Это по-прежнему будет многоэтапным процессом или потребует от владельца сайта дополнительных шагов ».

инструкции по установке

У вас должно быть четкое представление о том, на что способен WP API и каковы его ограничения. Давайте покажем вам этапы работы с ним. Прежде всего, вам нужно добавить плагин WP API на свой сайт WordPress.

Перейдите на https://wordpress.org/plugins/rest-api. Нажмите красную кнопку Скачать. Это должно загрузить последнюю версию плагина WP API в виде zip-файла.

WP REST API WordPress скачать плагин

Затем войдите на свой сайт WordPress (your-site-name.com/wp-login.php). Наведите указатель мыши на плагины на левой боковой панели и нажмите «Добавить новый». Нажмите кнопку «Загрузить плагин», нажмите «Выбрать файл», выберите сжатую версию плагина WP API и нажмите «Установить сейчас».

WP API WordPress Plugin Загрузка и установка

Теперь, когда он установлен, нажмите ссылку «Активировать плагин».

WP API WordPress Плагин Активировать

Измените постоянные ссылки на что-то отличное от значения по умолчанию; мы установили для нас опцию Post name.

Настройки постоянной ссылки WordPress

Это все, что связано с настройкой WP REST API. Теперь мы можем перейти к забавным вещам и получить некоторые данные с вашего веб-сайта WordPress с помощью WP API.

Пример WP REST API-запросов

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

Начните с добавления расширения Postman Chrome . Вы также можете установить REST Easy Add-On, если вы используете Firefox.

Получение сообщений

Мы собираемся показать вам, как получить все сообщения, которые в настоящее время существуют на вашем сайте WordPress. Для этого скопируйте следующий URL (маршрут):

 http://www.your-web-site.com/wp-json/wp/v2/posts 

Вставьте этот маршрут в поле URL запроса ввода Почтальона здесь (вы также можете сделать это, просто набрав маршрут выше в веб-браузере, но данные не будут отформатированы (поэтому будет сложнее увидеть схему)). Замените «your-web-site.com» веб-сайтом, на котором вы установили плагин WP API (в нашем случае это был веб-сайт wpmerchant.com; как вы можете видеть на изображении ниже). Выберите GET из выпадающего списка и нажмите «Отправить».

Получить сообщения с помощью WP API

Это отправляет запрос GET на сервер вашего сайта WordPress, а сервер отправляет обратно ответ на основании маршрута и установленного действия HTTP. Вы должны увидеть ответ JSON, аналогичный приведенному ниже.

Получить сообщения WP API Plugin Response

Как видите, этот ответ структурирован определенным образом, так что вы можете легко и предсказуемо получить доступ к данным внутри него; это называется схемой. Эта структура действительно важна, потому что, зная ее, позволяет программно просеивать данные. Ответ начинается с [(левая квадратная скобка). Это идентифицирует ответ как массив JSON. Если вы посмотрите на ответ более подробно, вы обнаружите, среди прочего, что первое сообщение в массиве имеет идентификатор сообщения 838 , заголовок сообщения WPMerchant: простая и мощная электронная коммерция для WordPress, а также содержимое сообщения начиная с <p> Мощные функции в простом интерфейсе. ). Эта структура выполняется во всех других сообщениях, которые возвращаются в ответе.

Получить сообщение

Теперь, когда вы знаете, как получить список сообщений на вашем сайте, мы покажем вам, как получить конкретную запись с вашего сайта WordPress с установленным плагином WP API. Скопируйте маршрут ниже.

 http://www.your-web-site.com/wp-json/wp/v2/posts/{id} 

Вставьте это в поле URL запроса почтальона. Опять же, убедитесь, что вы выбрали GET из выпадающего списка. Замените your-web-site.com веб-сайтом, на котором вы установили плагин WP API, и замените {id} идентификатором поста, который, как вы знаете, существует на сайте WordPress.

Получить сообщение с помощью плагина WP API

Нажмите на синюю кнопку Отправить. Вы должны увидеть что-то похожее на следующий ответ:

Получить ответ с помощью плагина WP API

Как видите, для запуска ответа нет левой квадратной скобки. Это означает, что этот ответ является объектом, а не массивом объектов. В частности, этот ответ включает в себя все данные поста, относящиеся к посту с идентификатором поста 838. Отдельные данные поста имеют тот же формат, что и список постов выше. Вы можете снова проанализировать ответ и увидеть идентификатор сообщения, заголовок сообщения, содержание сообщения, выдержку из сообщения и многое другое.

Получайте удовольствие и тестируйте некоторые другие неаутентифицированные HTTP-запросы!

Вывод

Как вы можете сказать, мы действительно рады использованию WP API, а также последствиям WP REST API и различным функциональным возможностям, которые появятся в результате его использования (и, надеюсь, возможному включению в ядро ​​WordPress).

В следующей статье мы собираемся создать внешний сайт, который создает, извлекает, обновляет и удаляет записи WordPress с использованием API WP REST. Так что, следите за обновлениями в нашем твиттере!

Продолжить разговор

Как вы планируете использовать WP API? Как вы предполагаете, что это будет использоваться? Мы будем рады услышать ваши мысли ниже!