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

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

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

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

Кроме того, для сайтов с несколькими редакторами и авторами удобна синхронизация изменений и возможность настроить частоту и условия автосохранения.

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

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

WordPress использует системный AJAX-запрос для отправки данных на сервер с интервалом, заданным в константе AUTOSAVE_INTERVAL (по умолчанию 60 секунд). Данные сохраняются как отдельный черновик, который можно восстановить при следующем открытии редактора.

Но этот механизм не всегда гибок, и его можно настроить или заменить собственным решением.

Изменение интервала автосохранения

Для изменения интервала автосохранения достаточно добавить следующий код в functions.php вашей темы или в кастомный плагин:

add_filter('autosave_interval', 'wpweb_autosave_interval');
function wpweb_autosave_interval() {
    return 30; // Интервал в секундах
}

В данном примере интервал снижен до 30 секунд, что позволяет чаще сохранять изменения.

Расширение функционала автосохранения с помощью плагинов

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

  • Revision Control — позволяет управлять количеством ревизий, тем самым снижая нагрузку на базу данных.
  • WP Activity Log — отслеживает все изменения и может помочь в восстановлении данных.
  • Autosave Manager — даёт расширенный контроль над автосохранением, включая настройку интервалов и исключений.

Все эти плагины доступны на официальном репозитории WordPress.

Пример реализации кастомного автосохранения через AJAX

Для большей гибкости можно реализовать собственный механизм автосохранения с помощью AJAX и REST API. Рассмотрим пример, когда пользователь пишет пост, и данные сохраняются на сервер каждые 15 секунд.

Шаг 1. Добавляем JavaScript для отправки данных

function wpweb_enqueue_autosave_script() {
    wp_enqueue_script('wpweb-autosave', get_template_directory_uri() . '/js/wpweb-autosave.js', array('jquery'), '1.0', true);
    wp_localize_script('wpweb-autosave', 'wpweb_autosave_obj', array(
        'ajax_url' => admin_url('admin-ajax.php'),
        'post_id' => get_the_ID(),
        'nonce' => wp_create_nonce('wpweb_autosave_nonce')
    ));
}
add_action('admin_enqueue_scripts', 'wpweb_enqueue_autosave_script');

Файл wpweb-autosave.js будет содержать следующий код:

jQuery(document).ready(function($) {
    setInterval(function() {
        var content = $('#content').val();
        $.post(wpweb_autosave_obj.ajax_url, {
            action: 'wpweb_autosave_post',
            post_id: wpweb_autosave_obj.post_id,
            content: content,
            nonce: wpweb_autosave_obj.nonce
        }, function(response) {
            if(response.success) {
                console.log('Автосохранение прошло успешно');
            } else {
                console.log('Ошибка автосохранения');
            }
        });
    }, 15000); // 15 секунд
});

Шаг 2. Обработка AJAX-запроса в PHP

add_action('wp_ajax_wpweb_autosave_post', 'wpweb_handle_autosave_post');
function wpweb_handle_autosave_post() {
    check_ajax_referer('wpweb_autosave_nonce', 'nonce');

    $post_id = intval($_POST['post_id']);
    $content = wp_kses_post($_POST['content']);

    if(current_user_can('edit_post', $post_id)) {
        $updated_post = array(
            'ID' => $post_id,
            'post_content' => $content
        );
        wp_update_post($updated_post);
        wp_send_json_success();
    } else {
        wp_send_json_error('Нет прав на редактирование');
    }
}

Такой подход позволяет сохранять контент каждые 15 секунд и при этом не зависит от стандартного механизма WordPress.

Полезные советы по работе с автосохранением

  • Регулярно очищайте ревизии и черновики для оптимизации базы данных. Для этого подойдёт плагин Clearfy Pro.
  • Используйте системные инструменты резервного копирования, чтобы избежать полной потери данных.
  • Настраивайте интервал автосохранения в зависимости от специфики сайта и объёма контента.
  • Тестируйте кастомные решения на тестовом сервере, чтобы избежать конфликтов с другими плагинами.

Заключение

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

Как избежать проблем с неработающими шорткодами в WordPress
26.04.2026
Как использовать AJAX для обновления контента в WordPress без перезагрузки страницы
29.03.2026
Как использовать WPCommunity для создания собственного форума в WordPress
19.03.2026
Как создать свой плагин для WordPress с нуля: пошаговое руководство
04.11.2025
Как удалить атрибуты style и script в WordPress для улучшения безопасности и производительности
25.11.2025