wphow.ru wordpress WPHow

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

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

Что такое REST API в WordPress и для чего он нужен

REST API — это интерфейс взаимодействия, основанный на архитектурном стиле REST. В WordPress он позволяет работать с записями, страницами, пользователями, комментариями и другими типами данных через стандартные HTTP-методы (GET, POST, PUT, DELETE).

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

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

Как получать данные через REST API WordPress (GET запросы)

Для получения списка постов достаточно сделать GET-запрос к стандартному эндпоинту:

https://example.com/wp-json/wp/v2/posts

Можно фильтровать результаты, например, по категориям, тегам или авторам:

https://example.com/wp-json/wp/v2/posts?categories=5&per_page=10

Для запроса одного конкретного поста:

https://example.com/wp-json/wp/v2/posts/123

В ответ вы получите JSON с данными поста, включая заголовок, содержимое, дату и мета-данные.

Пример запроса через PHP (используя wp_remote_get)

function wphow_fetch_posts() {
    $response = wp_remote_get('https://example.com/wp-json/wp/v2/posts?per_page=5');
    if (is_wp_error($response)) {
        return [];
    }
    $body = wp_remote_retrieve_body($response);
    return json_decode($body, true);
}

Эта функция возвращает массив с последними 5 постами.

Добавление и изменение данных через REST API (POST, PUT запросы)

Для создания и изменения записей через REST API требуется авторизация. WordPress поддерживает несколько методов авторизации, включая cookie авторизацию для фронтенда и базовую аутентификацию для внешних приложений.

Наиболее простой способ для разработки — использовать плагин Basic Auth от WPShop, который позволяет быстро настроить базовую аутентификацию.

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

function wphow_create_post() {
    $url = 'https://example.com/wp-json/wp/v2/posts';
    $args = [
        'headers' => [
            'Authorization' => 'Basic ' . base64_encode('user:password'),
            'Content-Type' => 'application/json',
        ],
        'body' => json_encode([
            'title' => 'Новый пост через REST API',
            'content' => 'Содержимое поста',
            'status' => 'publish'
        ]),
        'method' => 'POST'
    ];
    $response = wp_remote_request($url, $args);
    return wp_remote_retrieve_body($response);
}

Этот код создаст новый опубликованный пост на сайте.

Расширение REST API: создание кастомных эндпоинтов

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

Пример регистрации кастомного маршрута:

add_action('rest_api_init', function () {
    register_rest_route('wphow/v1', '/hello', [
        'methods' => 'GET',
        'callback' => 'wphow_rest_hello_callback',
    ]);
});

function wphow_rest_hello_callback(WP_REST_Request $request) {
    return ['message' => 'Привет из кастомного REST API эндпоинта!'];
}

Теперь по адресу /wp-json/wphow/v1/hello можно получить JSON с сообщением.

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

Вы можете принимать параметры из URL и использовать их в логике:

add_action('rest_api_init', function () {
    register_rest_route('wphow/v1', '/post/(?P<id>\d+)', [
        'methods' => 'GET',
        'callback' => 'wphow_rest_get_post_by_id',
        'args' => [
            'id' => [
                'validate_callback' => function($param, $request, $key) {
                    return is_numeric($param);
                }
            ]
        ]
    ]);
});

function wphow_rest_get_post_by_id(WP_REST_Request $request) {
    $post_id = $request->get_param('id');
    $post = get_post($post_id);
    if (!$post) {
        return new WP_Error('no_post', 'Пост не найден', ['status' => 404]);
    }
    return [
        'id' => $post->ID,
        'title' => $post->post_title,
        'content' => $post->post_content
    ];
}

Такой эндпоинт позволяет запрашивать данные поста по ID с проверкой параметров.

Безопасность и производительность при работе с REST API

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

Рекомендуется ограничивать доступ к отдельным эндпоинтам, если там есть чувствительные данные. Для этого можно использовать фильтры и проверять права пользователя через current_user_can().

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

Заключение

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

Используйте встроенные маршруты для стандартных данных, расширяйте API под задачи проекта и обязательно обеспечивайте безопасность и оптимизацию.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙