Любой опытный разработчик WordPress знает, насколько важно предотвращать потерю данных при редактировании контента. Автоматическое сохранение (autosave) и функция восстановления данных — ключевые инструменты, которые помогают защитить вашу работу от случайного закрытия браузера, сбоев или других проблем. В этой статье мы подробно разберём, как работает автосохранение в WordPress, как его можно настроить и расширить, а также рассмотрим несколько практических примеров с кодом и полезные плагины.
Что такое автоматическое сохранение в WordPress и зачем оно нужно
Автосохранение — это функция, встроенная в ядро WordPress, которая периодически сохраняет незавершённые изменения в постах и страницах. Это позволяет пользователям не потерять данные, если браузер неожиданно закроется или произойдёт ошибка. Автосохранения хранятся как отдельные ревизии и доступны для восстановления.
По умолчанию WordPress сохраняет автосохранения каждые 60 секунд во время редактирования. Однако этот интервал можно изменить, а также можно реализовать дополнительные механизмы для более глубокой защиты данных.
Важно понимать, что автосохранение — это не то же самое, что ревизии (revisions). Ревизии сохраняются при каждом ручном сохранении или обновлении записи, а автосохранения — промежуточные, временные копии.
Как настроить интервал автосохранения в WordPress
Чтобы изменить частоту автосохранения, достаточно добавить в файл wp-config.php следующую строку:
define('AUTOSAVE_INTERVAL', 120); // интервал в секундахВ этом примере автосохранение будет происходить каждые 2 минуты (120 секунд). Рекомендуется не делать интервал слишком маленьким, чтобы не нагружать сервер постоянными запросами.
Если вы хотите полностью отключить автосохранение (что не рекомендуется), можно добавить следующий код в файл functions.php вашей темы или в плагин:
add_action('admin_init', function() {
wp_deregister_script('autosave');
});<Но лучше не отключать эту функцию, а наоборот — улучшать её работу.
Расширение функционала автосохранения: пример плагина wpcontent-autosave-enhancer
Давайте рассмотрим пример, как можно расширить стандартное автосохранение. Например, добавить сохранение изменений не только для поста, но и для произвольных полей (custom fields), которые часто не обрабатываются стандартным механизмом.
Создадим простой плагин wpcontent-autosave-enhancer, который будет сохранять значения кастомных полей в автосохранениях:
<?php
/**
* Plugin Name: WPContent Autosave Enhancer
* Description: Добавляет поддержку автосохранения для кастомных полей
* Version: 1.0
* Author: WPContent
*/
add_filter('wp_save_post_revision_check_for_changes', 'wpcontent_check_custom_fields_changes', 10, 2);
function wpcontent_check_custom_fields_changes($check, $post) {
// Получаем текущие и прошлые значения кастомных полей
$custom_fields = ['my_custom_field_1', 'my_custom_field_2'];
foreach ($custom_fields as $field) {
$old = get_metadata('post', $post->ID, $field, true);
$new = isset($_POST[$field]) ? sanitize_text_field($_POST[$field]) : '';
if ($old !== $new) {
// Если значения отличаются, возвращаем true, чтобы сохранить ревизию
return true;
}
}
return $check;
}
add_action('save_post', 'wpcontent_save_custom_fields_on_autosave', 10, 2);
function wpcontent_save_custom_fields_on_autosave($post_id, $post) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
$custom_fields = ['my_custom_field_1', 'my_custom_field_2'];
foreach ($custom_fields as $field) {
if (isset($_POST[$field])) {
update_post_meta($post_id, $field, sanitize_text_field($_POST[$field]));
}
}
}
}
?>Этот код расширяет проверку изменений при автосохранении, чтобы учитывать кастомные поля, и сохраняет их значения в метаданных поста. Так вы не потеряете изменения в дополнительных полях при автосохранении.
Плагины для улучшения автосохранения и восстановления данных в WordPress
Кроме стандартного механизма, есть плагины, которые помогают улучшить или добавить новые возможности по сохранению и восстановлению данных:
- Revision Control — позволяет управлять количеством ревизий, автоматически удалять старые и настраивать параметры.
- WP Autosave Interval — простой плагин для удобной настройки интервала автосохранения через админку.
- Better Autosave — расширяет стандартное автосохранение, добавляя сохранение данных форм плагинов и тем.
- WP Revisions Control — аналог Revision Control с дополнительными гибкими настройками.
Использование таких плагинов помогает более гибко управлять сохранением данных и минимизировать риск потери информации.
Рекомендации по работе с автосохранением и восстановлением данных
Чтобы обеспечить максимальную безопасность данных при редактировании:
- Регулярно обновляйте WordPress и установленные плагины — это гарантирует исправление возможных багов в автосохранении.
- Настройте интервал автосохранения под свои нужды с учётом нагрузки на сервер.
- Используйте плагины для расширения функционала, если стандартных средств недостаточно.
- Проверяйте, что кастомные поля и нестандартные типы контента правильно сохраняются при автосохранении.
- В случае крупных изменений в интерфейсе редактирования учитывайте совместимость с механизмом автосохранения.
Как вручную восстановить данные из автосохранения
Если вы случайно потеряли изменения, WordPress позволяет восстановить их из автосохранения. Для этого откройте пост в редакторе и в правом верхнем углу нажмите на ссылку "Восстановить автосохранение". Если ссылка не видна, можно вручную сделать запрос к базе данных, чтобы получить последнюю версию автосохранения из таблицы wp_postmeta или wp_posts с типом revision.
Пример простого запроса для получения автосохранения поста с ID 123:
SELECT * FROM wp_posts WHERE post_parent = 123 AND post_type = 'revision' ORDER BY post_date DESC LIMIT 1;Далее можно вручную скопировать содержимое и вставить в редактор.
Выводы и лучшие практики
Автоматическое сохранение — незаменимый инструмент для обеспечения безопасности данных в WordPress. Настройка правильного интервала, расширение функционала под свои задачи и использование проверенных плагинов помогут избежать потери контента даже в нестандартных ситуациях.
Внимательное отношение к сохранению кастомных данных и регулярное тестирование восстановления — залог стабильной и удобной работы с сайтом.
Надеюсь, этот материал поможет вам лучше понять и грамотно настроить систему автосохранения на ваших WordPress-проектах.