Содержимое
Из “коробки”, WordPress обладает всем необходимым функционалом для работы с АПИ. Взаимодействие с WordPress REST API осуществляется посредством ендпонт-классов / точек доступа / endpoints расположенных в каталоге ”/wp-includes/rest-api/endpoints”. Поэтому, если есть какие либо вопросы, как что работает, какие фильтры поддерживает поиск, какие хуки можно использовать - рекомендую сперва заглянуть в этот каталог. Там расположено достаточно количество информации для понимания, порой запутано, но спасибо современным редактором все можно найти.
По умолчанию, ВП позволяет лишь считывать информацию по API в JSON формате. Т.е. создавать, редактировать или удалять данные вы не сможете. Для последних трех действий, вам понадобится или установить сторонние плагины (что мы и будем делать), или разработать весь необходимый функционал самостоятельно (что мы также сделаем).
Не забывайте, что использование сторонних плагинов, а тем более с низким рейтингом (или давним сроком обновления) в репозитории водпресс, может быть чревато уязвимостями или багами.
По какому адресу доступен REST API в WordPress
Все Endpoints WP расположены по ссылке - “//адрес-вашего-сайта/wp-json/wp/v2”. Там же, могут присутствовать и ендпоинты других приложений, по адресу - “//адрес-вашего-сайта/wp-json/здесь-что-то-другое”. А всю доступную информацию касательно АПИ, можно посмотреть по url - “//адрес-вашего-сайта/wp-json/”. Детальнее рассмотрите секцию “routes”, в ней расположены все доступные маршруты.
Как фильтровать данные по АПИ?
Дефолтные точки доступа WordPress, такие как: посты, страницы, категории, пр. Имеют уже предварительно настроенные параметры для фильтрации. Если брать посты, то их можно найти здесь - “//адрес-вашего-сайта/wp-json/routes/wp/v2/posts”. Далее ищем раздел “endpoints” (он вложенный, но в URL его нет), он содержит два элемента - GET и POST. Первый для - чтения, второй используется для создания записей.
Последний, как было написано выше - использовать не получится. Что бы можно было создавать данные в WP по JSON API, нужно сперва авторизовать пользователя. Так вот, первая секция (где GET), содержит набор аргументов которые мы можем использовать для поиска данных по АПИ. Там же указан тип данных который поддерживает тот или иной аргумент поиска. Это важно, т.к. WordPress в противном случае выдаст предупреждение.
Как создать точку доступа / endpoint в WordPress?
Для кастомных / своих пост-тайпов (таких как: post или page), вы это указываете при их регистрации:
register_post_type(‘my_post_type’, array( 'show_in_rest' => true, //or FALSE ));
Вы также можете создать кастомный endpoint для своих целей (например - для обновления цен WooCommerce по его SKU). Для этого придется использовать следующий хук:
add_action('rest_api_init', function() { register_rest_route('project/v1', 'update', [ 'methods' => WP_REST_Server::EDITABLE, 'callback' => function(WP_REST_Request $Request) { }, 'args' = > [ ] ]); });
Вообще, тема API в WordPress (+JSON) довольно интересная. В данном цикле статей, я постараюсь раскрыть ее как можно больше.