Одной из частых проблем при работе с 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. Подходите к настройке внимательно и учитывайте нагрузку на сервер и особенности работы сайта.