WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Получай пассивный доход от сайта

REST API

WordPress REST API (или коротко WP API) позволяет пользователям (HTTP Клиентам) удаленно управлять сайтом, например получать/создавать посты, элементы таксономии, юзеров, комментарии и т.д. Делается все это через обычные HTTP запросы, так называемые «маршруты».
В ответ на запрос всегда возвращается JSON объект с данными.

REST API полноценно был добавлен в ядро WordPress в версии 4.7.

Коротко о REST API (WP API)

WordPress REST API (далее просто REST API или WP API) разработан на базе технологии REST, чтобы иметь понятные URL-адреса и использовать коды HTTP ответов для указания успехов или ошибок. Использует встроенные функции HTTP, такие как http-аутентификация и http-команды (GET, POST), которые могут быть поняты многими HTTP-клиентами. WP API позволяет удобно и безопасно работать с WordPress из клиентского приложения.

REST API:

  • Предоставляет структурированный, расширяемый и простой способ получить или передать данные в WordPress.

  • Использует json в качестве формата запроса и ответа, включая ответы на ошибки.

  • Предоставляет разные данные: публичные и личные (доступны только после аутентификации). После аутентификации rest API позволяет управлять контентом сайта.

  • Позволяет работать с любым языком программирования, который может обрабатывать HTTP-запросы и интерпретировать JSON, например Node.js или Java.

  • Позволяет создать новые способы управления сайтом. К примеру, можно создать плагин, позволяющий администрировать сайт, или создать совершенно новый интерактивный интерфейс во фронэнде.

  • Может заменить способ обработки ajax запросов. Смотрите: admin-ajax API.

При всей своей простоте, REST API может показаться сложным, поэтому изучение этой темы будет разбито на логические части, так будет проще освоить материал. В основном сложность заключается в новой терминологии — это всякие там ресурсы, эндпоинты, маршруты. Они нужны для создания и применения стандартов, но для понимания того, как это работает все эти вещи совсем не обязательны.

меню

Создание маршрута

В WordPress, есть готовые маршруты. А также можно создавать свои собственные, для этого нужно использовать функцию register_rest_route().

Давайте создадим свой маршрут.

// создание маршрута
add_action( 'rest_api_init', function(){

	// пространство имен
	$namespace = 'myplugin/v1';

	// маршрут
	$rout = '/author-posts/(?P<id>\d+)';

	// параметры конечной точки (маршрута)
	$rout_params = [
		'methods'  => 'GET',
		'callback' => 'my_awesome_func',
	];

	register_rest_route( $namespace, $rout, $rout_params );

} );

// функция обработчик конечной точки (маршрута)
function my_awesome_func( WP_REST_Request $request ){

	$posts = get_posts( [
		'author' => (int) $request['id'],
	] );

	if ( empty( $posts ) ) {
		return new WP_Error( 'no_author_posts', 'Записей не найдено', [ 'status' => 404 ] );
	}

	return $posts;
}

Теперь пройдя по ссылке http://example.com/wp-json/myplugin/v1/author-posts/1 мы увидим JSON ответ, который вернула наша функция my_awesome_func().

Пояснения к коду:

  • Маршрут нужно регистрировать именно на хуке rest_api_init, чтобы не выполнять никаких операций, если REST API отключен.

  • Почему пространства имен называется именно myplugin/v1, читайте здесь.

  • Маршрут /author-posts/(?P<id>\d+) указан как регулярное выражение для определения числа, чтобы по URL /author-posts/123 нам выдавались посты автора с ID 123.

  • GET запрос на URL http://example.com/wp-json/myplugin/v1/author-posts/1 - это конечная точка, которую мы описали при регистрации маршрута.

    Маршрут может иметь несколько конечных точек, и для каждой конечной точки можно указать разные параметры:

    • methods — HTTP методы по которым нужно обращаться к конечной точке
    • callback — функцию обратного вызова для ответа на запрос
    • permission_callback — функцию обратного вызова для проверки права доступа к конечной точке.
    • args — параметры запроса, которые можно передать конечной точке. Каждый параметр описывается в виде элемента массива. Для каждого параметра можно указать свои опции, например, обязательный ли это параметр (required) или значение параметра по умолчанию (default), функцию проверки значения параметра (validate_callback). Подробнее читайте в разделе Типы параметров.

Подробнее про создание маршрутов читайте в разделе Создание Маршрута

Для понимания работы REST API достаточно изучить всего одну функцию register_rest_route(), ознакомится с маршрутами WP и научится пользоваться любым Клиентом для общения с WP API (например Postman).

меню

Ключевые понятия REST API

Смотрите в разделе Базовые знания REST API. Нужно разобраться в каждом понятии, чтобы понимать что написано и о чем идет речь в этом руководстве!

Полезные ссылки

Этот раздел создавался на базе официального руководства: REST API Handbook (англ). Однако тут мы по возможности упрощаем/уточняем/дорабатываем/реструктурируем контент, приводим примеры и в итоге стараемся подать информацию более понятно.

13 комментов
Вопросы 2 Все
    Войти