Современная разработка под WordPress всё больше опирается на REST API — мощный инструмент, позволяющий создавать динамичные и интерактивные приложения поверх WordPress. В этой статье мы подробно рассмотрим, как использовать REST API для получения, создания и изменения данных в WordPress, а также как расширять его под свои задачи.
Что такое REST API в WordPress и зачем он нужен
REST API — это интерфейс, который позволяет взаимодействовать с сайтом WordPress программно через HTTP-запросы. С помощью REST API можно получать данные (посты, страницы, пользователи), создавать новые записи, редактировать и удалять их. Это открывает широкие возможности для создания SPA (single-page applications), мобильных приложений или интеграций с внешними сервисами.
Начиная с версии 4.7 WordPress имеет встроенный REST API, который сразу готов к работе. Однако для расширения стандартного функционала часто требуется писать собственные эндпоинты.
Как получить данные из WordPress через REST API
Для получения списка постов достаточно отправить GET-запрос на адрес https://ваш-сайт/wp-json/wp/v2/posts. Пример с помощью fetch в JavaScript:
fetch('https://wpnews.ru/wp-json/wp/v2/posts')
.then(response => response.json())
.then(data => console.log(data));В ответ вы получите JSON-массив с постами, содержащий заголовки, даты, содержимое и другую метаинформацию.
Для получения конкретного поста по ID запрос будет выглядеть так: GET https://wpnews.ru/wp-json/wp/v2/posts/123.
Фильтрация и пагинация
REST API позволяет фильтровать результаты. Например, получить 5 последних опубликованных постов в категории с ID 10:
https://wpnews.ru/wp-json/wp/v2/posts?categories=10&per_page=5&status=publishОбратите внимание, что некоторые параметры, например, фильтры по произвольным полям, требуют расширения API.
Создание новых записей через REST API с аутентификацией
Для создания или редактирования данных необходима аутентификация. Чаще всего используют Basic Auth или OAuth. Для разработки удобно использовать плагин Application Passwords или JWT Authentication for WP REST API.
Пример создания поста с помощью Basic Auth и fetch:
fetch('https://wpnews.ru/wp-json/wp/v2/posts', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + btoa('username:application_password')
},
body: JSON.stringify({
title: 'Новый пост через REST API',
content: 'Содержимое поста',
status: 'publish'
})
})
.then(response => response.json())
.then(data => console.log(data));Важно: никогда не храните пароли в открытом виде в клиентском коде. Для безопасных решений используйте серверные прокси или OAuth.
Как расширить REST API своими эндпоинтами в WordPress
Часто стандартных эндпоинтов недостаточно. Например, нужно получить данные из пользовательских таблиц или выполнить сложную логику. Для этого регистрируют собственные маршруты и контроллеры.
Пример регистрации кастомного эндпоинта для получения информации о текущем пользователе:
add_action('rest_api_init', function () {
register_rest_route('wpnews/v1', '/current-user', [
'methods' => 'GET',
'callback' => 'wpnews_get_current_user',
'permission_callback' => function () {
return is_user_logged_in();
}
]);
});
function wpnews_get_current_user(WP_REST_Request $request) {
$user = wp_get_current_user();
if (!$user->exists()) {
return new WP_Error('no_user', 'Пользователь не найден', ['status' => 404]);
}
return [
'ID' => $user->ID,
'login' => $user->user_login,
'email' => $user->user_email
];
}Теперь запрос GET https://wpnews.ru/wp-json/wpnews/v1/current-user вернёт данные текущего пользователя, если он авторизован.
Параметры и обработка ошибок
REST API позволяет принимать параметры запросов и возвращать подробные ошибки. Обязательно проверяйте права доступа в permission_callback, чтобы избежать уязвимостей.
Полезные плагины для работы с REST API в WordPress
Для удобства и расширения функционала можно использовать:
- WP REST API Controller — позволяет управлять видимостью полей в стандартных эндпоинтах.
- JWT Authentication for WP REST API — добавляет поддержку JWT-аутентификации для безопасной работы.
- Advanced Custom Fields (ACF) с дополнением ACF to REST API — позволяет выводить пользовательские поля в API.
Интеграция REST API WordPress с фронтендом на React
REST API идеально подходит для построения SPA на React, Vue или Angular. Пример простого React-компонента для загрузки и отображения заголовков последних постов:
import React, { useEffect, useState } from 'react';
function WpnewsPostList() {
const [posts, setPosts] = useState([]);
useEffect(() => {
fetch('https://wpnews.ru/wp-json/wp/v2/posts?per_page=5')
.then(res => res.json())
.then(data => setPosts(data));
}, []);
return (
<div>
<h2>Последние посты</h2>
<ul>
{posts.map(post => (
<li key={post.id}>{
post.title.rendered
}</li>
))}
</ul>
</div>
);
}
export default WpnewsPostList;Такой подход позволяет создавать быстрые и отзывчивые интерфейсы, а WordPress выступает в роли бэкенда.
Советы по безопасности при работе с REST API
REST API открывает доступ к данным сайта через HTTP. Важно контролировать, кто может создавать, изменять и удалять контент. Вот основные рекомендации:
- Используйте
permission_callbackдля проверки прав на каждом маршруте. - Настройте аутентификацию через OAuth или JWT, а не Basic Auth в продакшене.
- Ограничьте видимость личных данных.
- Обновляйте WordPress и плагины, чтобы избежать уязвимостей.
Подводя итог, REST API — ключ к гибкой и современной разработке под WordPress. Освоив его, вы сможете создавать сложные и удобные решения, расширять функционал и интегрировать WordPress с любыми внешними сервисами.