Как добавить автоматическое сохранение в редактор WordPress

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

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

Стандартное автосохранение в WordPress срабатывает каждые 60 секунд и сохраняет временную версию поста. Но это не всегда удобно, особенно если вы работаете с большими текстами или сложным контентом с медиафайлами. Кроме того, стандартное автосохранение может создавать много ревизий, что нагружает базу данных.

Добавление кастомного автосохранения позволяет:

  • Уменьшить частоту сохранений, чтобы снизить нагрузку на сервер
  • Добавить уведомления о сохранении, чтобы пользователь всегда знал, что данные не потерялись
  • Автоматически сохранять дополнительные поля или метаданные
  • Интегрировать автосохранение с кастомными редакторами или полями

Все эти возможности расширяют стандартный функционал и делают работу с редактором комфортнее и надежнее.

Обзор популярных плагинов для автоматического сохранения в WordPress

Если не хочется писать код самостоятельно, можно использовать плагины, которые решают задачи автоматического сохранения более гибко.

1. Better Autosave

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

2. Revision Control

Хотя этот плагин не занимается автосохранением напрямую, он помогает управлять ревизиями — то есть сохранять только нужное количество версий и тем самым оптимизировать базу данных.

3. Кастомные решения с Advanced Custom Fields (ACF)

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

Как написать собственный код для автоматического сохранения в редакторе WordPress

Для более тонкой настройки и интеграции можно реализовать автосохранение своими силами. Ниже приведен пример, как расширить стандартный механизм с помощью JavaScript и PHP.

Добавление JavaScript для периодического сохранения

Мы добавим скрипт, который будет автоматически запускать сохранение поста через REST API WordPress каждые 30 секунд.

function wphelper_enqueue_autosave_script() {
  wp_enqueue_script('wphelper-autosave', get_template_directory_uri() . '/js/wphelper-autosave.js', array('wp-api', 'jquery'), null, true);
  wp_localize_script('wphelper-autosave', 'wphelperAutosave', array(
    'postId' => get_the_ID(),
    'nonce' => wp_create_nonce('wp_rest')
  ));
}
add_action('admin_enqueue_scripts', 'wphelper_enqueue_autosave_script');

В файле wphelper-autosave.js напишем следующий код:

(function($) {
  function wphelperAutosavePost() {
    var postId = wphelperAutosave.postId;
    if (!postId) return;

    var data = {
      status: 'draft'
    };

    $.ajax({
      url: '/wp-json/wp/v2/posts/' + postId,
      method: 'POST',
      beforeSend: function(xhr) {
        xhr.setRequestHeader('X-WP-Nonce', wphelperAutosave.nonce);
      },
      data: data,
      success: function(response) {
        console.log('Пост сохранен автоматически', response);
      },
      error: function() {
        console.warn('Ошибка автосохранения');
      }
    });
  }

  setInterval(wphelperAutosavePost, 30000); // Каждые 30 секунд
})(jQuery);

Обработка сохранения на сервере

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

function wphelper_register_custom_rest_fields() {
  register_rest_field('post', 'custom_meta', array(
    'get_callback' => function($post) {
      return get_post_meta($post['id'], '_custom_meta_key', true);
    },
    'update_callback' => function($value, $post) {
      update_post_meta($post->ID, '_custom_meta_key', sanitize_text_field($value));
    },
    'schema' => array(
      'description' => 'Custom meta field',
      'type' => 'string',
      'context' => array('view', 'edit')
    ),
  ));
}
add_action('rest_api_init', 'wphelper_register_custom_rest_fields');

Практические советы по улучшению автосохранения

Чтобы автосохранение работало эффективно и не создавало проблем, учитывайте следующие рекомендации:

  • Оптимизируйте частоту сохранений. Выставляйте интервал в зависимости от типа контента и объема данных. Например, для больших страниц можно увеличить интервал до минуты или двух.
  • Используйте уведомления. Добавьте визуальные индикаторы, чтобы пользователь видел, когда происходит автосохранение и успешно ли оно прошло.
  • Обрабатывайте ошибки. Если автосохранение не удалось, уведомляйте пользователя и давайте возможность вручную сохранить изменения.
  • Минимизируйте ревизии. Настраивайте количество ревизий и очищайте старые, чтобы база данных не разрасталась.

Выводы и перспективы

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

С помощью описанных приемов вы сможете создать надежный механизм автосохранения, который будет работать именно так, как вам нужно.

Как использовать transientы в WordPress для кэширования данных
25.02.2026
Автоматическое изменение стоимости товаров в WooCommerce по условиям
04.06.2026
Как отключить автопроигрывание видео в WordPress
24.12.2025
Как отключить системные чтения WooCommerce для повышения производительности
06.05.2026
WooCommerce: как решить проблему не отправляющихся писем о подтверждении заказа
13.05.2026