Как добавить собственный REST API endpoint в WordPress с поддержкой GPT

В современных проектах на WordPress часто возникает необходимость создавать собственные REST API endpoints для интеграции с внешними сервисами или для расширения функциональности сайта. Особенно актуально это становится, когда мы хотим использовать возможности искусственного интеллекта, например GPT, для генерации или обработки данных прямо на стороне сервера.

Что такое REST API endpoint в WordPress и зачем он нужен

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

  • Обрабатывать кастомные запросы от фронтенда или внешних приложений.
  • Интегрироваться с внешними сервисами, например, GPT через API.
  • Расширять функциональность без изменения ядра WordPress.

Такой подход идеален для плагинов и тем, где нужно гибко управлять логикой приложения.

Как создать собственный REST API endpoint в WordPress

Создание собственного endpoint сводится к регистрации маршрута и определению callback-функции, которая будет обрабатывать запросы. Для этого используется функция register_rest_route. Рассмотрим простой пример на базе пространства имён wp-gpt/v1:

add_action('rest_api_init', function () {
    register_rest_route('wp-gpt/v1', '/generate-text', array(
        'methods' => 'POST',
        'callback' => 'wpgpt_generate_text_endpoint',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        },
    ));
});

function wpgpt_generate_text_endpoint(WP_REST_Request $request) {
    $params = $request->get_json_params();
    $prompt = sanitize_text_field($params['prompt'] ?? '');

    if (empty($prompt)) {
        return new WP_Error('no_prompt', 'Параметр prompt обязателен', array('status' => 400));
    }

    // Здесь будет вызов API GPT
    $response_text = wpgpt_call_openai_api($prompt);

    return array('generated_text' => $response_text);
}

В этом коде мы регистрируем POST-эндпоинт /wp-gpt/v1/generate-text, который принимает параметр prompt — текст запроса к GPT. Функция wpgpt_generate_text_endpoint обрабатывает входные данные, проверяет права пользователя и возвращает сгенерированный текст.

Безопасность и проверка прав

Обратите внимание на параметр permission_callback. Без него endpoint будет доступен всем, что может привести к злоупотреблениям. В примере мы разрешаем доступ только пользователям, которые могут редактировать записи. При необходимости можно реализовать более тонкую проверку, например, по nonce или токену авторизации.

Как интегрировать GPT через API OpenAI в WordPress

Для интеграции с GPT понадобится отправлять HTTP-запросы к OpenAI. В WordPress удобно использовать класс WP_Http или функции wp_remote_post. Ниже пример простой функции для вызова API:

function wpgpt_call_openai_api(string $prompt): string {
    $api_key = 'ВАШ_API_КЛЮЧ';
    $endpoint = 'https://api.openai.com/v1/completions';

    $body = json_encode(array(
        'model' => 'text-davinci-003',
        'prompt' => $prompt,
        'max_tokens' => 150,
        'temperature' => 0.7,
    ));

    $response = wp_remote_post($endpoint, array(
        'headers' => array(
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer ' . $api_key,
        ),
        'body' => $body,
        'timeout' => 15,
    ));

    if (is_wp_error($response)) {
        return 'Ошибка запроса к OpenAI: ' . $response->get_error_message();
    }

    $code = wp_remote_retrieve_response_code($response);
    $data = json_decode(wp_remote_retrieve_body($response), true);

    if ($code !== 200 || empty($data['choices'][0]['text'])) {
        return 'Ошибка API OpenAI: ' . ($data['error']['message'] ?? 'Неизвестная ошибка');
    }

    return trim($data['choices'][0]['text']);
}

Обязательно замените ВАШ_API_КЛЮЧ на свой ключ OpenAI. Такая функция отправляет prompt и получает сгенерированный текст.

Пример использования собственного REST endpoint с GPT в фронтенде

Чтобы использовать созданный endpoint из JavaScript, можно отправить AJAX-запрос с данными:

fetch('/wp-json/wp-gpt/v1/generate-text', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-WP-Nonce': wpApiSettings.nonce // если нужно
    },
    body: JSON.stringify({ prompt: 'Привет, расскажи про WordPress' })
})
.then(response => response.json())
.then(data => {
    console.log('Ответ GPT:', data.generated_text);
});

Не забудьте подключить wp-api и локализовать скрипт, чтобы передать nonce и URL API.

Рекомендации и полезные плагины для работы с REST API и GPT

Для упрощения работы с API GPT в WordPress можно использовать готовые плагины, например WPGPT от WPShop. Он уже реализует множество функций по интеграции GPT и автоматизации создания контента.

Также полезно использовать плагины для отладки REST API, такие как REST API Toolbox, которые помогут управлять разрешениями и тестировать свои эндпоинты.

Советы по безопасности и оптимизации

1. Используйте nonce и capability проверки, чтобы защитить endpoint.
2. Кэшируйте результаты генерации, чтобы снизить нагрузку и количество вызовов к API.
3. Ограничивайте размер и количество запросов для предотвращения злоупотреблений.
4. Логируйте ошибки и ответы для отладки.

Итог

Создание собственного REST API endpoint в WordPress с поддержкой GPT позволит вам автоматически генерировать контент, создавать умные ответы и расширять возможности сайта. Приведённые примеры кода помогут быстро начать разработку. Используйте готовые решения, такие как WPGPT, чтобы сэкономить время и получить мощный функционал с минимальными усилиями.

Как создать автоматический генератор UTM-меток для WordPress
20.02.2026
Как создать автоматический генератор шорткодов в WordPress с поддержкой параметров
19.03.2026
Как создать автоматический анализатор оценок в отзывах WordPress с помощью PHP и WPGPT
01.02.2026
Как создать автоматический генератор отзывов с оценкой в WordPress
22.03.2026
Как удалить мета-поля постов в WordPress без phpMyAdmin
07.12.2025