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

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

Почему стандартное автосохранение Gutenberg не всегда достаточно

По умолчанию Gutenberg сохраняет посты в виде черновиков с интервалом около 10 секунд, а также при каждом изменении. Но при работе с динамическими блоками, сторонними плагинами или подключёнными API-интеграциями могут возникать проблемы:

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

Для решения этих проблем имеет смысл подключать собственные механизмы автосохранения и уведомления.

Расширение автосохранения Gutenberg с помощью JavaScript

Gutenberg построен на React и использует JavaScript API для управления состоянием редактора. Мы можем добавить слушатель изменений и реализовать дополнительное сохранение.

Пример: создание автосохранения кастомных метаполей

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

function wordpresses_autosave_custom_meta() {
    wp.data.subscribe(() => {
        const meta = wp.data.select('core/editor').getEditedPostAttribute('meta');
        // Проверяем, изменилось ли значение
        if (meta.my_custom_meta !== wordpresses_autosave_custom_meta.lastValue) {
            wordpresses_autosave_custom_meta.lastValue = meta.my_custom_meta;
            // Отправляем AJAX-запрос на сохранение
            wp.apiFetch({
                path: '/wp/v2/posts/' + wp.data.select('core/editor').getCurrentPostId(),
                method: 'POST',
                data: { meta: { my_custom_meta: meta.my_custom_meta } }
            }).then(() => {
                console.log('Кастомное поле сохранено автоматически');
            });
        }
    });
}
wordpresses_autosave_custom_meta.lastValue = null;
wp.domReady(() => {
    wordpresses_autosave_custom_meta();
});

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

Добавление визуальной индикации автосохранения

Пользователь должен видеть, что происходит сохранение. Для этого можно использовать механизм уведомлений WordPress или создать собственный элемент UI.

Пример: уведомление с использованием @wordpress/notices

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

import { dispatch } from '@wordpress/data';
import { createNotice } from '@wordpress/notices';

function wordpresses_show_autosave_notice() {
    dispatch('core/notices').createNotice(
        'info',
        'Автосохранение контента...',
        { isDismissible: true }
    );
}

// Вызовем уведомление перед AJAX-запросом

Подобные уведомления помогут пользователю не беспокоиться за сохранность данных.

Автоматическое сохранение при отключении интернета или закрытии вкладки

Иногда пользователь может потерять данные из-за потери соединения или случайного закрытия вкладки браузера. Для таких случаев можно использовать beforeunload и локальное хранилище.

Пример: сохранение в localStorage и восстановление

window.addEventListener('beforeunload', () => {
    const content = wp.data.select('core/editor').getEditedPostContent();
    localStorage.setItem('wordpresses_autosave_draft', content);
});

wp.domReady(() => {
    const savedContent = localStorage.getItem('wordpresses_autosave_draft');
    if (savedContent) {
        wp.data.dispatch('core/editor').editPost({ content: savedContent });
        localStorage.removeItem('wordpresses_autosave_draft');
        alert('Восстановлено автосохранённое содержимое');
    }
});

Такой подход особенно полезен, если серверное автосохранение не успевает сработать.

Рекомендуемые плагины для расширенного автосохранения WordPress

Если вы предпочитаете готовые решения, обратите внимание на следующие плагины с расширенными функциями автосохранения:

  • Clearfy Pro – оптимизация и расширенные настройки автосохранения и кеширования.
  • WPGPT – расширение для интеграции с GPT, поддерживает автоматическую генерацию и сохранение контента.

Итоги и рекомендации по автосохранению в Gutenberg

Автоматическое сохранение в редакторе Gutenberg – важный элемент безопасности данных и удобства пользователя. Стандартных инструментов может быть недостаточно для сложных проектов с кастомным функционалом. В таких случаях стоит:

  • Реализовать собственные механизмы автосохранения через JavaScript и REST API.
  • Добавить визуальные уведомления об успешном сохранении.
  • Использовать локальное хранилище для резервного копирования при отключении интернета.
  • Рассмотреть проверенные плагины с расширенными возможностями.

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

Как проверить и исправить ошибки в базе данных WordPress
02.03.2026
Как установить и настроить REST API для собственного плагина
29.11.2025
Автоматическое удаление товаров с нулевым запасом в WooCommerce
19.04.2026
Автоматическое удаление старых записей WordPress через хуки и wp_schedule_event
08.02.2026
Как отключить Emoji в WordPress для ускорения загрузки сайта
15.03.2026