Как создать и использовать WordPress REST API для начинающих: практические примеры и советы

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

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

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

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

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

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

Для создания собственного эндпоинта воспользуемся функцией register_rest_route. Ниже приведён пример регистрации маршрута /yelly/v1/message, который возвращает простое сообщение.

add_action('rest_api_init', function () {
    register_rest_route('yelly/v1', '/message', array(
        'methods' => 'GET',
        'callback' => 'yelly_get_message',
    ));
});

function yelly_get_message(WP_REST_Request $request) {
    return new WP_REST_Response(array(
        'message' => 'Привет от Yelly REST API!'
    ), 200);
}

Этот код нужно добавить в файл functions.php вашей темы или в собственный плагин. После этого запрос GET /wp-json/yelly/v1/message вернёт JSON с сообщением.

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

Часто API эндпоинты требуют принимать параметры. Добавим параметр name, чтобы персонализировать ответ:

add_action('rest_api_init', function () {
    register_rest_route('yelly/v1', '/greet', array(
        'methods' => 'GET',
        'callback' => 'yelly_greet_user',
        'args' => array(
            'name' => array(
                'required' => false,
                'validate_callback' => function($param, $request, $key) {
                    return is_string($param);
                }
            ),
        ),
    ));
});

function yelly_greet_user(WP_REST_Request $request) {
    $name = $request->get_param('name') ?: 'Гость';
    return new WP_REST_Response(array(
        'greeting' => "Привет, $name! Добро пожаловать на Yelly.ru"
    ), 200);
}

Теперь можно отправлять запрос GET /wp-json/yelly/v1/greet?name=Иван и получать персонализированное приветствие.

Аутентификация в WordPress REST API

Для доступа к защищённым данным и выполнению операций изменения необходима аутентификация. В WordPress REST API поддерживаются несколько методов:

Для примера рассмотрим базовую аутентификацию с использованием плагина Basic Auth. Установите и активируйте плагин Basic Auth, после чего можно отправлять запросы с заголовком:

Authorization: Basic base64_encode('username:password')

Внутри кастомного эндпоинта можно получить данные текущего пользователя через wp_get_current_user() и ограничить доступ, например:

function yelly_protected_data(WP_REST_Request $request) {
    if (!is_user_logged_in()) {
        return new WP_REST_Response(array('error' => 'Доступ запрещён'), 403);
    }
    $user = wp_get_current_user();
    return new WP_REST_Response(array('user_login' => $user->user_login), 200);
}

Примеры полезных кастомных эндпоинтов

Получение списка последних постов

Можно создать эндпоинт, который возвращает последние записи блога со стандартными полями и дополнительной информацией.

add_action('rest_api_init', function () {
    register_rest_route('yelly/v1', '/latest-posts', array(
        'methods' => 'GET',
        'callback' => 'yelly_get_latest_posts',
    ));
});

function yelly_get_latest_posts(WP_REST_Request $request) {
    $args = array(
        'numberposts' => 5,
        'post_status' => 'publish'
    );
    $posts = get_posts($args);
    $data = array();
    foreach ($posts as $post) {
        $data[] = array(
            'id' => $post->ID,
            'title' => get_the_title($post->ID),
            'excerpt' => get_the_excerpt($post->ID),
            'date' => get_the_date('', $post->ID),
            'link' => get_permalink($post->ID)
        );
    }
    return new WP_REST_Response($data, 200);
}

Создание нового поста через API

Для создания записи через REST API необходимо использовать метод POST и аутентификацию. Пример эндпоинта:

add_action('rest_api_init', function () {
    register_rest_route('yelly/v1', '/create-post', array(
        'methods' => 'POST',
        'callback' => 'yelly_create_post',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        }
    ));
});

function yelly_create_post(WP_REST_Request $request) {
    $title = sanitize_text_field($request->get_param('title'));
    $content = sanitize_textarea_field($request->get_param('content'));

    $post_id = wp_insert_post(array(
        'post_title' => $title,
        'post_content' => $content,
        'post_status' => 'draft',
        'post_author' => get_current_user_id(),
    ));

    if (is_wp_error($post_id)) {
        return new WP_REST_Response(array('error' => 'Ошибка создания поста'), 500);
    }

    return new WP_REST_Response(array('post_id' => $post_id, 'message' => 'Пост создан успешно'), 201);
}

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

Для удобства разработки и расширения функционала API рекомендуем использовать следующие плагины:

Советы и лучшие практики при работе с REST API в WordPress

При создании и использовании REST API в WordPress важно придерживаться некоторых правил:

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

Как убрать версию WordPress из header для безопасности сайта
05.11.2025
Как создать динамические формы в WordPress с помощью AJAX
15.12.2025
Как отключить автостарт WP-Cron для оптимизации сайта WordPress
22.02.2026
Как избежать проблемы при удалённой работе с WordPress через FTP
07.12.2025
Как разделить производственную и тестовую среду в WordPress: практические решения и примеры
22.12.2025
×
8 Марта
сделай свой сайт красивым!
-20%

на темы и плагины WordPress

Забрать подарок ⋙