wp-lessons.ru wordpress WP-Lessons

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

Автоматическое сохранение (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, который предлагает инструменты управления автосохранением и ревизиями без сложного кода.

×
ABC
Pagination
Улучшай навигацию на сайте за секунды!
-15%

на ABC Pagination плагин WordPress

Сделать красиво ⋙