Что такое REST API в WordPress и зачем он нужен
REST API – это современный способ взаимодействия с WordPress через HTTP-запросы. Он позволяет создавать, читать, обновлять и удалять данные сайта программным путем. Использование REST API особенно актуально, когда нужно интегрировать WordPress с внешними приложениями, мобильными клиентами или создавать динамичные админские интерфейсы.
В этой статье мы разберём, как на базе REST API создать собственный набор настроек (опций), которые можно будет управлять через API-запросы. Это полезно для разработчиков, которые хотят расширить функциональность сайта и управлять его параметрами программно.
Подход позволит упростить интеграцию, автоматизировать процессы и повысить гибкость сайта без прямого вмешательства в базу данных.
Регистрация собственного REST API маршрута для настроек WordPress
Для начала нам нужно зарегистрировать собственный маршрут в REST API WordPress. Это делается с помощью хука rest_api_init. Создадим функцию wpfront_register_settings_route, которая опишет маршрут и методы обработки запросов.
function wpfront_register_settings_route() {
register_rest_route('wpfront/v1', '/settings', [
'methods' => 'GET',
'callback' => 'wpfront_get_settings',
'permission_callback' => function () {
return current_user_can('manage_options');
}
]);
register_rest_route('wpfront/v1', '/settings', [
'methods' => 'POST',
'callback' => 'wpfront_update_settings',
'permission_callback' => function () {
return current_user_can('manage_options');
}
]);
}
add_action('rest_api_init', 'wpfront_register_settings_route');В этом коде мы создаём два эндпойнта: GET для получения настроек и POST для их обновления. Обратите внимание на параметр permission_callback, который проверяет права пользователя. Это важно для безопасности, чтобы никто без прав не мог менять настройки.
Функция получения настроек через REST API
Далее реализуем функцию wpfront_get_settings, которая вернёт текущие значения наших опций из базы данных.
function wpfront_get_settings() {
$settings = [
'custom_option_1' => get_option('wpfront_custom_option_1', ''),
'custom_option_2' => get_option('wpfront_custom_option_2', ''),
];
return rest_ensure_response($settings);
}Здесь мы используем стандартную функцию WordPress get_option для получения значений. Если опция не установлена, возвращается пустая строка.
Функция обновления настроек через REST API
Теперь добавим функцию wpfront_update_settings, которая будет принимать данные из POST-запроса и сохранять их в базе.
function wpfront_update_settings(WP_REST_Request $request) {
$params = $request->get_json_params();
if (!isset($params['custom_option_1']) || !isset($params['custom_option_2'])) {
return new WP_Error('missing_params', 'Отсутствуют необходимые параметры', ['status' => 400]);
}
update_option('wpfront_custom_option_1', sanitize_text_field($params['custom_option_1']));
update_option('wpfront_custom_option_2', sanitize_text_field($params['custom_option_2']));
return rest_ensure_response(['success' => true]);
}Обратите внимание на использование sanitize_text_field для очистки входящих данных. Это базовая мера безопасности, чтобы избежать внедрения вредоносного кода.
Тестирование и использование собственного API для настроек
Для тестирования можно использовать инструменты вроде Postman или curl. Например, чтобы получить настройки, выполните GET-запрос по адресу:
https://ваш-сайт.ru/wp-json/wpfront/v1/settings
Для обновления настроек используйте POST-запрос с JSON-телом:
{
"custom_option_1": "значение 1",
"custom_option_2": "значение 2"
}<Важно отправлять запросы под пользователем с правами администратора, иначе получите ошибку доступа.
Примеры плагинов для расширения REST API в WordPress
Если не хочется писать код с нуля, можно использовать готовые плагины, которые облегчают работу с REST API:
- WP REST API Controller – позволяет настраивать и управлять выводом данных через API прямо из админки.
- Advanced Custom Fields (ACF) to REST API – добавляет в API поля, созданные через ACF, что удобно для работы с пользовательскими метаданными.
- WP REST API Authentication – расширяет методы аутентификации для безопасного взаимодействия с API.
Эти плагины помогут быстро расширить возможности вашего сайта без глубокого погружения в PHP.
Рекомендации по безопасности при работе с REST API
Использование REST API требует особого внимания к безопасности:
- Всегда проверяйте права пользователя через
permission_callback. - Санитизируйте и валидируйте все входящие данные.
- Используйте HTTPS для защиты передачи данных.
- Ограничивайте доступ к критичным маршрутам только администраторам или определённым ролям.
Это позволит избежать утечек данных и несанкционированного доступа.
Заключение
REST API в WordPress – мощный инструмент для расширения функционала и интеграции. Создание собственных маршрутов для управления настройками открывает широкие возможности автоматизации и кастомизации. Мы показали пример простого, но полного решения с регистрацией маршрутов, обработкой запросов и базовыми мерами безопасности.
Используйте этот подход, чтобы создавать удобные интерфейсы управления и интегрировать WordPress с внешними системами, делая ваш сайт гибким и современным.