WordPress автоматически сохраняет черновики и версии записей (revisions), чтобы сохранить изменения и предотвратить потерю данных. Однако со временем эти данные накапливаются и существенно увеличивают размер базы данных, что может замедлять работу сайта. В этой статье разберем, как эффективно удалить ненужные autosave и revision из базы данных, а также рассмотрим плагины и примеры кода для автоматизации этого процесса.
Что такое autosave и revision в WordPress и почему их нужно удалять
Автоматическое сохранение (autosave) – это механизм, который сохраняет контент поста каждые несколько секунд во время редактирования, чтобы предотвратить потерю данных. Версии записей (revisions) – это сохраненные копии изменений, которые позволяют откатиться к предыдущим вариантам контента.
Хотя эти функции полезны, со временем количество записей autosave и revision может достигать десятков тысяч в базе данных, особенно на крупных сайтах с большим количеством контента. Это приводит к замедлению запросов к базе данных, увеличению времени отклика и общему ухудшению производительности.
Удаление старых и ненужных autosave и revision позволяет:
- Снизить размер базы данных
- Ускорить работу сайта и админ-панели
- Повысить скорость резервного копирования и восстановления
Как вручную удалить autosave и revision через SQL-запросы
Если у вас есть доступ к phpMyAdmin или другому инструменту управления базой данных, можно выполнить следующие запросы для удаления этих данных.
Удаление autosave
Autosave в WordPress имеет тип записи auto-draft и обычно сохраняется с меткой post_status = 'auto-draft'. Однако в некоторых случаях autosave представлен как черновик с типом 'revision' или иным статусом.
Для удаления всех autosave можно выполнить запрос:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_content LIKE '%autosave%';Однако предпочтительнее удалять именно ревизии, так как autosave обычно удаляется автоматически при публикации поста.
Удаление всех ревизий постов
Чтобы удалить все ревизии, которые не нужны, выполните:
DELETE FROM wp_posts WHERE post_type = 'revision';После выполнения запросов рекомендуется оптимизировать таблицу для освобождения места:
OPTIMIZE TABLE wp_posts;Важно: перед выполнением любых запросов сделайте резервную копию базы данных, чтобы избежать потери данных.
Автоматизация удаления и ограничение количества ревизий с помощью кода
Чтобы не допускать накопления большого количества ревизий, можно ограничить их количество программно. Для этого в файл functions.php темы или в собственный плагин добавьте следующий код:
function wpmanager_limit_revisions() {
if (!defined('WP_POST_REVISIONS')) {
define('WP_POST_REVISIONS', 5); // Оставить не более 5 ревизий
}
}
add_action('init', 'wpmanager_limit_revisions');Это ограничит количество ревизий, сохраняемых для каждого поста, до 5. Старые ревизии будут автоматически удаляться.
Также можно создать функцию, которая будет автоматически удалять ревизии и autosave при сохранении поста:
function wpmanager_delete_old_revisions($post_id) {
global $wpdb;
// Удаляем все ревизии для поста, кроме последних 5
$revisions = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'revision' AND post_parent = %d ORDER BY post_date DESC LIMIT 1000 OFFSET 5",
$post_id
));
if (!empty($revisions)) {
foreach ($revisions as $revision_id) {
wp_delete_post($revision_id, true);
}
}
// Удаляем autosave для данного поста
$autosave = wp_get_post_autosave($post_id);
if ($autosave) {
wp_delete_post($autosave->ID, true);
}
}
add_action('save_post', 'wpmanager_delete_old_revisions');Рекомендуемые плагины для управления ревизиями и оптимизации базы данных
Если не хотите писать код вручную, можно воспользоваться проверенными плагинами:
- WP-Optimize – мощный инструмент для очистки базы данных, удаления ревизий, спама, автосохранений, а также оптимизации таблиц.
- Advanced Database Cleaner – позволяет удалять ревизии, автосохранения, а также управлять транзиентами и другими объектами базы данных.
- Revision Control – плагин для ограничения количества ревизий, с настройками для каждого типа записи.
Эти плагины имеют удобный интерфейс и могут выполнять очистку базы по расписанию, что удобно для крупных проектов.
Как проверить эффективность удаления ревизий и autosave
После оптимизации базы данных важно проверить, насколько уменьшился её размер и улучшилась производительность сайта. Для этого рекомендуются следующие методы:
- Проверка размера базы данных: в phpMyAdmin или через плагины, например, WP-Optimize, можно увидеть размер таблиц до и после очистки.
- Тест скорости сайта: с помощью инструментов как Google PageSpeed Insights, GTmetrix или Pingdom проверяйте время загрузки страниц.
- Мониторинг запросов: с помощью Query Monitor можно увидеть, как изменилось время выполнения SQL-запросов.
Если после очистки заметно улучшение, значит оптимизация прошла успешно.
Заключение
Удаление autosave и revision – одна из важных задач по оптимизации производительности WordPress-сайта. Правильное управление этими данными позволяет уменьшить нагрузку на базу данных и ускорить работу сайта. Используйте SQL-запросы, программные методы и плагины для регулярной очистки и ограничения количества ревизий, чтобы поддерживать WordPress в оптимальном состоянии.