Как добавить автоматическое сохранение записей через REST API в WordPress

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

Почему нужно автосохранение через REST API в WordPress

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

Автосохранение через REST API помогает:

  • Сохранять черновики без действий пользователя.
  • Минимизировать потерю данных при сбоях.
  • Обеспечить плавный UX при работе с большими текстовыми блоками и медленным интернетом.
  • Интегрировать с редакторами, отличными от стандартного Gutenberg.

Основные шаги реализации автосохранения через REST API в WordPress

Реализация автосохранения состоит из трёх этапов:

  1. Создание REST API запроса для сохранения записи.
  2. Отправка данных из фронтенда с определённым интервалом или по событию.
  3. Обработка ответа и обновление данных в интерфейсе.

Создание REST API запроса для сохранения записи

WordPress уже предоставляет стандартный REST API для работы с записями — эндпоинт /wp-json/wp/v2/posts/{id}. Для создания или обновления записи необходимо отправить POST или PUT запрос с необходимыми данными.

Например, чтобы обновить запись с ID 123, мы можем отправить запрос:

PUT /wp-json/wp/v2/posts/123
Content-Type: application/json
Authorization: Bearer <token>

{
  "content": "Обновлённое содержание поста",
  "title": "Заголовок поста",
  "status": "draft"
}

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

Отправка данных с фронтенда с интервалом

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

Пример простого JS-кода с использованием fetch для отправки автосохранения:

const wplikeAutoSave = (postId, getContent, getTitle, token) => {
  setInterval(() => {
    const content = getContent();
    const title = getTitle();

    fetch(`/wp-json/wp/v2/posts/${postId}`, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify({
        content: content,
        title: title,
        status: 'draft'
      })
    })
    .then(response => response.json())
    .then(data => {
      console.log('Автосохранение успешно:', data);
      // Здесь можно обновить UI, например, показать время последнего сохранения
    })
    .catch(error => {
      console.error('Ошибка автосохранения:', error);
    });
  }, 30000); // интервал 30 секунд
};

Такую функцию можно интегрировать в любой редактор — классический, Gutenberg или кастомный SPA.

Обработка ответа и уведомление пользователя

После отправки данных важно уведомить пользователя, что данные сохранились, например, обновить статус в интерфейсе "Сохранено 12:45". Это повысит доверие и улучшит UX.

Если сохранение не удалось — желательно показывать предупреждение или пробовать повторить попытку.

Как защитить REST API эндпоинт и авторизовать запросы

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

  • Использование cookie авторизации (авторизация через встроенную сессию WordPress).
  • Использование OAuth или JWT токенов для API запросов (например, плагин WPGPT поддерживает JWT).
  • Проверка прав пользователя на редактирование записи через функцию current_user_can() в PHP.

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

add_action('rest_api_init', function() {
  register_rest_route('wplike/v1', '/autosave/(?P<id>>\d+)', [
    'methods' => 'POST',
    'callback' => 'wplike_autosave_callback',
    'permission_callback' => function() {
      return current_user_can('edit_posts');
    }
  ]);
});

function wplike_autosave_callback($request) {
  $post_id = (int) $request['id'];
  $params = $request->get_json_params();

  $postarr = [
    'ID' => $post_id,
    'post_content' => $params['content'] ?? '',
    'post_title' => $params['title'] ?? '',
    'post_status' => 'draft'
  ];

  $updated_id = wp_update_post($postarr, true);
  if (is_wp_error($updated_id)) {
    return new WP_Error('update_failed', 'Не удалось сохранить запись', ['status' => 500]);
  }

  return ['success' => true, 'post_id' => $updated_id];
}

Такой подход позволяет добавить любую логику (например, кастомные валидации или обработку полей).

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

Существует несколько плагинов, которые помогут с реализацией или дадут готовые решения для автосохранения и расширения REST API:

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

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

Очень важно на этапе разработки тщательно проверить работу автосохранения:

  • Используйте инструменты разработчика в браузере для отслеживания HTTP запросов и ответов.
  • Проверяйте права доступа и корректность токенов авторизации.
  • Логируйте ошибки на сервере и клиенте для быстрого выявления проблем.
  • Тестируйте работу при медленном соединении и прерывании интернета.

Это позволит избежать потери данных и обеспечить стабильную работу функции автосохранения.

Как изменить URL авторского архива в WordPress
20.03.2026
Как автоматизировать работу с изображениями в WordPress
25.11.2025
Как настроить автоматическое удаление неактивных пользователей WordPress
04.02.2026
WooCommerce: автоматическое заполнение адреса доставки по email покупателя
23.04.2026
Как создать динамические формы в WordPress с помощью AJAX
31.03.2026