Как использовать REST API в WordPress для создания настроек

WordPress REST API — мощный инструмент, который позволяет взаимодействовать с сайтом через HTTP-запросы. Это открывает большие возможности для создания динамических интерфейсов, мобильных приложений и расширенных административных панелей. В этой статье мы подробно разберём, как использовать REST API для создания пользовательских настроек на вашем сайте WordPress, включая примеры кода и рекомендации по безопасности.

Что такое WordPress REST API и зачем он нужен для настроек

REST API — это интерфейс, который позволяет получать и изменять данные сайта через HTTP-запросы. В WordPress он используется для управления постами, пользователями, терминами и многим другим. Но что, если нам нужно дать пользователю возможность сохранять собственные настройки — например, для плагина или темы — через REST API?

Использование REST API для настроек позволяет:

  • Создавать кастомные страницы настроек с динамическим интерфейсом на React или Vue;
  • Организовывать взаимодействие с настройками из мобильных приложений;
  • Обеспечивать асинхронное сохранение параметров без перезагрузки страницы.

Для этого достаточно зарегистрировать свои REST маршруты и обработчики, которые будут читать и записывать данные в базу WordPress.

Регистрация REST API маршрута для пользовательских настроек

Для начала создадим собственный REST API маршрут. Предположим, мы хотим сделать настройки для плагина под доменом wpturbo.ru и назовём функции с префиксом wpturbo_ для удобства.

Добавим следующий код в файл вашего плагина или в functions.php темы:

add_action('rest_api_init', 'wpturbo_register_settings_routes');
function wpturbo_register_settings_routes() {
    register_rest_route('wpturbo/v1', '/settings', array(
        'methods' => 'GET',
        'callback' => 'wpturbo_get_settings',
        'permission_callback' => function () {
            return current_user_can('manage_options');
        }
    ));

    register_rest_route('wpturbo/v1', '/settings', array(
        'methods' => 'POST',
        'callback' => 'wpturbo_update_settings',
        'permission_callback' => function () {
            return current_user_can('manage_options');
        }
    ));
}

Здесь мы регистрируем два маршрута: GET для получения настроек и POST для их обновления. Обратите внимание на permission_callback — он ограничивает доступ только администраторам.

Функция для получения настроек

Реализуем функцию wpturbo_get_settings, которая вернёт текущие настройки из базы данных WordPress. Для хранения настроек удобно использовать функцию get_option.

function wpturbo_get_settings() {
    $settings = get_option('wpturbo_custom_settings', array(
        'color' => 'blue',
        'show_banner' => true,
        'items_per_page' => 10
    ));
    return rest_ensure_response($settings);
}

Если настроек ещё нет, возвращаем настройки по умолчанию.

Функция для обновления настроек

Для обновления настроек реализуем wpturbo_update_settings. Здесь нам нужно обработать POST-запрос, проверить данные и сохранить их в опции.

function wpturbo_update_settings(WP_REST_Request $request) {
    $params = $request->get_json_params();

    // Валидация данных
    $color = isset($params['color']) ? sanitize_text_field($params['color']) : 'blue';
    $show_banner = isset($params['show_banner']) ? filter_var($params['show_banner'], FILTER_VALIDATE_BOOLEAN) : true;
    $items_per_page = isset($params['items_per_page']) ? intval($params['items_per_page']) : 10;

    $new_settings = array(
        'color' => $color,
        'show_banner' => $show_banner,
        'items_per_page' => $items_per_page
    );

    update_option('wpturbo_custom_settings', $new_settings);

    return rest_ensure_response(array('success' => true, 'settings' => $new_settings));
}

Обратите внимание на использование функций sanitize_text_field и filter_var для очистки входящих данных — это важно для безопасности.

Пример использования REST API для настроек на фронтенде

Теперь, когда API готов, можно создавать пользовательский интерфейс для управления настройками. Рассмотрим пример на JavaScript с использованием fetch.

Для начала получим текущие настройки:

fetch('/wp-json/wpturbo/v1/settings', {
    method: 'GET',
    credentials: 'same-origin'
})
.then(response => response.json())
.then(data => {
    console.log('Текущие настройки:', data);
    // Здесь можно заполнить форму значениями
});

Для обновления настроек отправим POST-запрос:

fetch('/wp-json/wpturbo/v1/settings', {
    method: 'POST',
    credentials: 'same-origin',
    headers: {
        'Content-Type': 'application/json',
        'X-WP-Nonce': wpturboSettings.nonce
    },
    body: JSON.stringify({
        color: 'red',
        show_banner: false,
        items_per_page: 20
    })
})
.then(response => response.json())
.then(data => {
    if (data.success) {
        alert('Настройки обновлены');
    }
});

Для передачи nonce (число для защиты от CSRF) нужно локализовать скрипт в WordPress и передать nonce через wp_localize_script или wp_enqueue_script.

Безопасность и лучшие практики при работе с REST API

Использование REST API требует особого внимания к безопасности:

  • Всегда проверяйте права пользователя в permission_callback. Лучше ограничивать доступ только администраторам или конкретным ролям.
  • Санитизируйте и валидируйте входящие данные, чтобы избежать внедрения вредоносного кода.
  • Используйте nonce для защиты POST-запросов от CSRF-атак.
  • Логируйте ошибки и необычные запросы, чтобы быстро реагировать на возможные атаки.

Кроме того, рекомендуется использовать HTTPS, чтобы защитить данные при передаче.

Популярные плагины для работы с REST API и настройками

Если не хочется писать всё с нуля, можно использовать готовые решения:

  • WP REST API Controller — плагин для расширения и настройки REST API без кода.
  • ACF to REST API — расширение для интеграции Advanced Custom Fields с REST API.
  • WP API Console — позволяет тестировать запросы к REST API прямо из админки.

Но если нужны уникальные настройки и логика — лучше писать свой код, как показано выше.

Заключение

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

WooCommerce: как автоматически удалять неиспользуемые вариации товаров через код
30.05.2026
Настройка отправки сообщений из WPForms через SMTP SendGrid
11.02.2026
WooCommerce: автоматическое удаление неиспользуемых вариаций товаров через код
26.05.2026
Логика оценки продуктивности в WordPress: практическое руководство с примерами
31.12.2025
Как создать эффективный пул подключений в WordPress для ускорения работы сайта
16.01.2026