wpmail.ru wordpress WP Mail

Услуги построения REST API для WordPress: советы и примеры

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

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

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

  • Создавать мобильные приложения, использующие данные сайта.
  • Интегрировать WordPress с внешними сервисами и CRM.
  • Строить одностраничные приложения (SPA) на React, Vue или Angular с использованием WordPress как бекенда.
  • Расширять функционал сайта без изменения ядра через собственные REST маршруты.

Однако базового API недостаточно для сложных задач — часто требуется создавать собственные эндпоинты или расширять стандартные.

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

Для примера рассмотрим, как зарегистрировать новый маршрут, который возвращает список последних новостей с дополнительными метаданными.

Регистрация маршрута и обработчика запроса

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

add_action('rest_api_init', 'wpmail_register_news_endpoint');
function wpmail_register_news_endpoint() {
    register_rest_route('wpmail/v1', '/news/', array(
        'methods' => 'GET',
        'callback' => 'wpmail_get_latest_news',
        'permission_callback' => '__return_true',
    ));
}

function wpmail_get_latest_news(WP_REST_Request $request) {
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 5,
        'orderby' => 'date',
        'order' => 'DESC',
    );
    $query = new WP_Query($args);
    $news = array();
    while ($query->have_posts()) {
        $query->the_post();
        $news[] = array(
            'id' => get_the_ID(),
            'title' => get_the_title(),
            'date' => get_the_date('c'),
            'excerpt' => get_the_excerpt(),
            'custom_meta' => get_post_meta(get_the_ID(), 'wpmail_custom_meta', true),
        );
    }
    wp_reset_postdata();
    return rest_ensure_response($news);
}

Этот код создает маршрут /wp-json/wpmail/v1/news/, который возвращает JSON с пятью последними постами и кастомным метаполем wpmail_custom_meta.

Тестирование и использование

Чтобы проверить работу, откройте в браузере или используйте Postman запрос:

https://your-site.ru/wp-json/wpmail/v1/news/

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

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

Стандартный API возвращает не все метаданные. Чтобы добавить свои поля, можно использовать фильтр register_rest_field. Например, добавим поле wpmail_custom_meta к ответу поста.

add_action('rest_api_init', 'wpmail_add_custom_meta_to_post');
function wpmail_add_custom_meta_to_post() {
    register_rest_field('post', 'wpmail_custom_meta', array(
        'get_callback' => 'wpmail_get_post_custom_meta',
        'schema' => null,
    ));
}

function wpmail_get_post_custom_meta($object) {
    return get_post_meta($object['id'], 'wpmail_custom_meta', true);
}

Теперь при запросе /wp-json/wp/v2/posts в ответе у каждого поста появится новое поле с вашим метаданным.

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

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

Не забывайте о permission_callback. Для публичных данных можно использовать __return_true, но для защищенных — реализуйте проверку прав, например:

function wpmail_check_user_permissions() {
    return current_user_can('edit_posts');
}

И зарегистрируйте маршрут так:

register_rest_route('wpmail/v1', '/private-data/', array(
    'methods' => 'GET',
    'callback' => 'wpmail_get_private_data',
    'permission_callback' => 'wpmail_check_user_permissions',
));

Кэширование результатов

Чтобы снизить нагрузку, используйте кэширование с помощью Transients API или внешних кеш-систем. Например:

function wpmail_get_cached_news() {
    $cached = get_transient('wpmail_latest_news');
    if ($cached !== false) {
        return $cached;
    }
    $news = wpmail_get_latest_news(new WP_REST_Request());
    set_transient('wpmail_latest_news', $news, 10 * MINUTE_IN_SECONDS);
    return $news;
}

Использование готовых плагинов для расширения REST API

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

  • WP REST API Controller — удобный интерфейс для управления полями и эндпоинтами без кода.
  • Advanced Custom Fields to REST API — добавляет поля ACF в REST ответы.
  • JWT Authentication for WP REST API — добавляет поддержку JWT для авторизации через API.

Эти инструменты помогают быстро адаптировать API под конкретные задачи.

Интеграция REST API WordPress с внешними сервисами

REST API упрощает интеграцию с CRM, мобильными приложениями, фронтенд-решениями. Например, для интеграции с CRM можно отправлять запросы на создание клиентов и заказы, используя POST-запросы к своим кастомным эндпоинтам.

Пример отправки POST-запроса на создание записи через свой API:

fetch('https://your-site.ru/wp-json/wpmail/v1/create-order/', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer YOUR_JWT_TOKEN'
    },
    body: JSON.stringify({
        customer_name: 'Иван Иванов',
        product_id: 123,
        quantity: 2
    })
})
.then(response => response.json())
.then(data => console.log(data));

На стороне WordPress нужно реализовать эндпоинт с проверкой авторизации и сохранением данных.

Заключение

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее