Как использовать REST API WordPress для создания кастомных функций

|

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

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

REST API (Representational State Transfer Application Programming Interface) — это набор правил и стандартов для взаимодействия между клиентом и сервером по протоколу HTTP. В WordPress он встроен с версии 4.7 и открывает доступ к данным сайта в формате JSON.

Основные возможности REST API WordPress:

Используя REST API, разработчик может строить одностраничные приложения (SPA), мобильные приложения или создавать кастомные административные панели.

Создание кастомного эндпоинта REST API в WordPress

Регистрация собственного маршрута

Для создания кастомного эндпоинта нужно зарегистрировать маршрут с помощью функции register_rest_route. Сделаем пример, где мы добавим эндпоинт, возвращающий список последних 5 постов с дополнительным полем.

add_action('rest_api_init', function () {
    register_rest_route('wppremium/v1', '/latest-posts/', array(
        'methods' => 'GET',
        'callback' => 'wppremium_get_latest_posts',
        'permission_callback' => '__return_true',
    ));
});

function wppremium_get_latest_posts($request) {
    $args = array(
        'numberposts' => 5,
        'post_status' => 'publish'
    );
    $recent_posts = wp_get_recent_posts($args);
    foreach ($recent_posts as &$post) {
        $post['custom_field'] = get_post_meta($post['ID'], 'custom_field_key', true);
    }
    return rest_ensure_response($recent_posts);
}

В этом примере мы создали маршрут /wp-json/wppremium/v1/latest-posts/, который возвращает последние 5 опубликованных записей с дополнительным метаполем custom_field. Функция разрешает доступ всем, но в реальных случаях стоит реализовать проверку прав.

Обработка параметров запроса

Для гибкости добавим возможность указать количество постов через параметр count. Для этого нужно определить args в register_rest_route и обработать параметр:

add_action('rest_api_init', function () {
    register_rest_route('wppremium/v1', '/latest-posts/', array(
        'methods' => 'GET',
        'callback' => 'wppremium_get_latest_posts',
        'permission_callback' => '__return_true',
        'args' => array(
            'count' => array(
                'validate_callback' => function($param, $request, $key) {
                    return is_numeric($param) && $param > 0 && $param <= 20;
                },
                'default' => 5
            ),
        ),
    ));
});

function wppremium_get_latest_posts($request) {
    $count = (int) $request->get_param('count');
    $args = array(
        'numberposts' => $count,
        'post_status' => 'publish'
    );
    $recent_posts = wp_get_recent_posts($args);
    foreach ($recent_posts as &$post) {
        $post['custom_field'] = get_post_meta($post['ID'], 'custom_field_key', true);
    }
    return rest_ensure_response($recent_posts);
}

Теперь можно запрашивать /wp-json/wppremium/v1/latest-posts/?count=10 и получать нужное количество записей.

Примеры практического использования кастомных REST API эндпоинтов

1. Создание формы обратной связи с AJAX и REST API

Можно реализовать форму обратной связи, которая отправляет данные через REST API, а сервер сохраняет их как пользовательский тип записи или отправляет на почту.

Пример регистрации эндпоинта для приёма данных формы:

add_action('rest_api_init', function () {
    register_rest_route('wppremium/v1', '/contact/', array(
        'methods' => 'POST',
        'callback' => 'wppremium_handle_contact_form',
        'permission_callback' => '__return_true',
        'args' => array(
            'name' => array('required' => true),
            'email' => array('required' => true),
            'message' => array('required' => true),
        ),
    ));
});

function wppremium_handle_contact_form($request) {
    $params = $request->get_params();
    $name = sanitize_text_field($params['name']);
    $email = sanitize_email($params['email']);
    $message = sanitize_textarea_field($params['message']);

    if (!is_email($email)) {
        return new WP_Error('invalid_email', 'Неверный email', array('status' => 400));
    }

    $post_id = wp_insert_post(array(
        'post_title' => 'Сообщение от: ' . $name,
        'post_content' => $message,
        'post_type' => 'contact_message',
        'post_status' => 'publish'
    ));

    if (is_wp_error($post_id)) {
        return new WP_Error('insert_failed', 'Ошибка сохранения сообщения', array('status' => 500));
    }

    add_post_meta($post_id, 'email', $email);

    return rest_ensure_response(array('success' => true, 'message' => 'Сообщение отправлено'));
}

Для этого создайте CPT contact_message (через плагин или код) и подключите AJAX-запросы на фронтенде.

2. Интеграция с внешними сервисами

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

Для таких задач создайте отдельные эндпоинты с проверкой аутентификации (OAuth, JWT или nonce), чтобы обеспечить безопасность.

Обеспечение безопасности при работе с REST API

Поскольку REST API открывает доступ к данным через HTTP, важно правильно настроить права доступа и проверку запросов.

Основные рекомендации:

Пример проверки прав по роли:

'permission_callback' => function () {
    return current_user_can('edit_posts');
}

Полезные плагины для работы с REST API в WordPress

Эти инструменты значительно облегчают разработку и расширение функционала через REST API, особенно если вы не хотите писать много кода вручную.

Подведение итогов и рекомендации по использованию REST API

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

Всегда тщательно продумывайте логику проверки прав и безопасность, чтобы не допустить утечек и несанкционированных действий.

Практикуйтесь в создании простых эндпоинтов, постепенно усложняя задачи. Это поможет вам освоить REST API и использовать его на полную мощность в своих проектах на WordPress.

Как успешно отладить проблемы с обновлением в WooCommerce
19.04.2026
Как добавить собственные поля в формы регистрации WordPress и сохранить данные
26.03.2026
Как разрешить или запретить копирование текста в WordPress: практические методы
08.04.2026
Как использовать REST API WordPress для создания кастомных функций
29.11.2025
Как создать комплексный фильтр для записей WordPress с несколькими условиями
27.02.2026
×
-15%
на премиум плагин
My Popup

Повысьте конверсию!

Получить скидку »