Как использовать REST API для создания и обновления записей в WordPress

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

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

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

С помощью REST API можно:

  • Создавать и редактировать записи из внешних приложений
  • Делать интеграции с CRM, ERP и другими системами
  • Автоматизировать процесс публикации контента

Для разработчика, знакомого с HTTP и JSON, работа с REST API WordPress открывает новые горизонты по управлению сайтом без необходимости заходить в админку.

Аутентификация для работы с REST API

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

1. Basic Authentication (для разработки)

Самый простой способ, но не рекомендуется для продакшена, так как передаёт логин и пароль в открытом виде. Для теста можно использовать плагин WP Basic Auth.

2. OAuth 1.0a

Сложнее в настройке, но безопаснее. Подходит для публичных приложений.

3. JWT (JSON Web Tokens)

Современный способ аутентификации с помощью плагинов, например, JWT Authentication. Позволяет безопасно передавать токены и легко интегрируется с фронтенд-приложениями.

Создание записи через REST API

Для создания записи отправляем POST-запрос на /wp-json/wp/v2/posts с необходимыми данными в формате JSON. Ниже пример на PHP с использованием библиотеки cURL для создания записи.

function wpset_create_post_via_rest($title, $content, $token) {
    $url = get_site_url() . '/wp-json/wp/v2/posts';

    $data = [
        'title' => $title,
        'content' => $content,
        'status' => 'publish'
    ];

    $args = [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer ' . $token
        ],
        'method' => 'POST'
    ];

    $response = wp_remote_request($url, $args);

    if (is_wp_error($response)) {
        return $response->get_error_message();
    }

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

    if ($code === 201) {
        return $body['id']; // ID созданного поста
    } else {
        return $body['message'] ?? 'Ошибка создания поста';
    }
}

В этом примере функция принимает заголовок, содержимое и токен авторизации. Токен можно получить через JWT или другой метод аутентификации.

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

Для обновления записи используем метод PUT или POST с указанием ID записи. Вот пример функции на PHP:

function wpset_update_post_via_rest($post_id, $title, $content, $token) {
    $url = get_site_url() . '/wp-json/wp/v2/posts/' . $post_id;

    $data = [
        'title' => $title,
        'content' => $content
    ];

    $args = [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer ' . $token
        ],
        'method' => 'POST' // WordPress принимает и POST для обновления
    ];

    $response = wp_remote_request($url, $args);

    if (is_wp_error($response)) {
        return $response->get_error_message();
    }

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

    if ($code === 200) {
        return true;
    } else {
        return $body['message'] ?? 'Ошибка обновления поста';
    }
}

Обратите внимание, что для обновления записи нужно знать её ID. В ответе API вы получите подтверждение или сообщение об ошибке.

Работа с метаполями и пользовательскими полями через REST API

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

Пример добавления поддержки метаполей:

function wpset_register_meta_for_rest() {
    register_post_meta('post', 'my_custom_field', [
        'show_in_rest' => true,
        'single' => true,
        'type' => 'string'
    ]);
}
add_action('init', 'wpset_register_meta_for_rest');

Теперь при создании или обновлении записи через REST API можно передавать поле my_custom_field в JSON:

{
  "title": "Заголовок",
  "content": "Содержимое",
  "meta": {
    "my_custom_field": "Значение"
  }
}

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

  • Clearfy Pro — улучшает безопасность и производительность, позволяет контролировать доступ к REST API.
  • WPRemark — расширенные возможности комментирования через REST API.

Обработка ошибок и отладка

При работе с REST API важно грамотно обрабатывать ошибки, чтобы понимать, что пошло не так. Ответы API содержат код HTTP и тело с подробностями.

Для отладки можно использовать такие инструменты, как Postman или curl:

curl -X POST https://example.com/wp-json/wp/v2/posts \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Тест","content":"Пример создания через API","status":"publish"}'

Если получаете ошибку 401 — проверьте аутентификацию, 403 — права доступа, 400 — неверные данные.

Заключение по использованию REST API в WordPress

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

Дополнительно рекомендую изучить документацию на официальном сайте WordPress и протестировать API на тестовом сайте перед внедрением на живой проект.

Как создать автоматический импорт данных из Google Sheets в WordPress
09.02.2026
WooCommerce: как разрешить оставлять отзывы только покупателям
29.05.2026
Как отключить системные email-уведомления WordPress без плагинов
07.04.2026
Как создать многоуровневую пагинацию в WordPress: подробное руководство
21.12.2025
Как удалить неиспользуемые метаполя в WordPress: практическое руководство
12.02.2026