Автоматическое сохранение (autosave) в редакторе Gutenberg — удобная функция, которая позволяет регулярно сохранять черновики вашего контента, чтобы избежать потери данных. Однако в некоторых случаях автосохранение может мешать, например, при работе с большими страницами, пользовательских мета-полях или при разработке сложных плагинов и тем, где требуется полный контроль над процессом сохранения.
Что такое автоматическое сохранение в Gutenberg и зачем его отключать
Функция автосохранения встроена в WordPress с версии 3.6 и активно используется в классическом редакторе и Gutenberg. Она периодически сохраняет текущий черновик на сервере без участия пользователя. В Gutenberg автосохранение запускается каждые несколько секунд после изменений в блоках.
Почему иногда стоит отключить автосохранение:
- Высокая нагрузка на сервер при большом количестве параллельных пользователей.
- Конфликты с кастомными скриптами и плагинами, которые следят за сохранением.
- Нежелательное создание большого количества ревизий и временных данных.
- Тестирование и отладка функций редактирования без постоянных изменений.
Как отключить автоматическое сохранение в Gutenberg через код
В отличие от классического редактора, где можно просто отключить autosave через фильтр, в Gutenberg нужно использовать JavaScript-фильтры и хуки редактора.
Отключение автосохранения с помощью фильтра редактора
Вы можете добавить следующий код в файл functions.php вашей темы или в плагин, чтобы отключить автосохранение:
add_filter('wp_editor_autosave', '__return_false');Однако этот фильтр работает не всегда, особенно в Gutenberg, поэтому лучше использовать JavaScript-хук.
Отключение автосохранения через JavaScript в Gutenberg
Самый надежный способ — добавить кастомный скрипт, который убирает автосохранение при инициализации редактора. Для этого создадим функцию, которая отключит функцию autosave в JavaScript.
function wplessons_disable_gutenberg_autosave() {
wp_enqueue_script(
'wplessons-disable-autosave',
get_template_directory_uri() . '/js/disable-autosave.js',
array('wp-edit-post'),
null,
true
);
}
add_action('enqueue_block_editor_assets', 'wplessons_disable_gutenberg_autosave');В файле disable-autosave.js напишем:
wp.data.dispatch('core/editor').lockPostSaving('wplessons-disable-autosave');
// Чтобы полностью отключить автосохранение, можно снять блокировку при необходимости
// wp.data.dispatch('core/editor').unlockPostSaving('wplessons-disable-autosave');Этот код блокирует возможность автоматического сохранения, что эффективно отключает автосохранение в редакторе. Обратите внимание, что при таком подходе пользователь должен вручную сохранять изменения.
Как отключить автосохранение для определённых типов записей
Если нужно отключить автосохранение не для всех типов записей, а только для определённых (например, для кастомного типа lesson), можно сделать так:
function wplessons_conditional_disable_autosave() {
$screen = get_current_screen();
if ( $screen && 'lesson' === $screen->post_type ) {
wp_enqueue_script(
'wplessons-disable-autosave',
get_template_directory_uri() . '/js/disable-autosave.js',
array('wp-edit-post'),
null,
true
);
}
}
add_action('enqueue_block_editor_assets', 'wplessons_conditional_disable_autosave');Таким образом, автосохранение будет отключено только для типа записи lesson.
Возможные проблемы и как их решать
Отключение автосохранения несет риски потери данных, если пользователь забудет сохранить вручную. Чтобы минимизировать эти риски, рекомендуем:
- Добавить кастомную кнопку сохранения с уведомлениями.
- Использовать плагин Clearfy Pro, который позволяет гибко управлять автосохранением и ревизиями.
- Проверять совместимость с другими плагинами, чтобы избежать конфликтов.
Альтернативные методы контроля автосохранения
Если полное отключение автосохранения нежелательно, можно ограничить частоту автосохранений через JavaScript, например, увеличив интервал между сохранениями:
wp.data.subscribe( () => {
const isSavingPost = wp.data.select('core/editor').isSavingPost();
if ( !isSavingPost ) {
// Можно настроить задержку или отменить некоторые триггеры
}
});Однако такой метод требует глубокой доработки и хорошего понимания API Gutenberg.
Выводы и рекомендации
Отключение автосохранения в Gutenberg — задача нетривиальная, но выполнимая. Лучший способ — использовать JavaScript-методы через enqueue скриптов и API редактора.
Обязательно учитывайте UX: пользователь должен понимать, что автосохранение отключено и сохранять изменения вручную.
Для тех, кто хочет более простое решение с гибкими настройками, советуем обратить внимание на плагин Clearfy Pro, который предлагает инструменты управления автосохранением и ревизиями без сложного кода.