Автосохранения (autosave) и ревизии (revisions) в WordPress — полезные функции для сохранения промежуточных версий записей и предотвращения потери данных. Однако со временем они накапливаются и могут сильно раздуть базу данных, что замедляет работу сайта. В этой статье подробно рассмотрим, как эффективно удалить автосохранения и ревизии, а также как предотвратить их чрезмерное накопление.
Что такое автосохранения и ревизии в WordPress
Автосохранение — автоматический механизм, который сохраняет черновик записи каждые 60 секунд во время редактирования. Это помогает восстановить данные при сбое браузера или отключении питания.
Ревизии — версии записей, которые сохраняются после каждого обновления. WordPress хранит историю изменений, чтобы вы могли откатиться к предыдущей версии, если что-то пошло не так.
Но если не контролировать количество ревизий и автосохранений, то в базе данных будет копиться множество записей в таблице wp_posts с типами revision и autosave. Это увеличивает размер базы, замедляет запросы и влияет на производительность.
Как удалить автосохранения и ревизии с помощью SQL-запросов
Самый быстрый способ очистить базу — выполнить запросы напрямую в базе данных через phpMyAdmin или любой другой инструмент управления MySQL.
Удаление автосохранений
DELETE FROM wp_posts WHERE post_type = 'autosave';Этот запрос удалит все автосохранения. Они не нужны после закрытия редактора, так как WordPress сохраняет последнюю версию как черновик.
Удаление ревизий
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удалит все ревизии. Учтите, что после этого вы не сможете откатиться к предыдущим версиям записей.
Рекомендуется сделать резервную копию базы перед выполнением запросов.
Как ограничить количество ревизий в WordPress
Чтобы предотвратить чрезмерное накопление ревизий, можно ограничить их количество с помощью константы WPBE_LIMIT_REVISIONS в файле wp-config.php. По умолчанию WordPress хранит все ревизии без лимита.
define('WPBE_LIMIT_REVISIONS', 5);Однако WordPress не распознает эту константу по умолчанию. Для работы нужно использовать стандартную константу WP_POST_REVISIONS:
define('WP_POST_REVISIONS', 5);Добавьте эту строку в wp-config.php перед строкой /* That's all, stop editing! */. Это ограничит количество ревизий для каждой записи до 5.
Удаление ревизий и автосохранений с помощью PHP-функции в теме или плагине
Если вы хотите делать очистку программно, например, по расписанию, можно создать функцию в functions.php вашей темы или в отдельном плагине.
function wpbe_delete_autosaves_and_revisions() {
global $wpdb;
// Удаляем автосохранения
$autosave_deleted = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'autosave'");
// Удаляем ревизии
$revision_deleted = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
return array('autosaves' => $autosave_deleted, 'revisions' => $revision_deleted);
}Вы можете вызвать эту функцию вручную или добавить в WP-Cron для регулярного запуска.
Пример добавления в WP-Cron
if (!wp_next_scheduled('wpbe_cleanup_revisions_event')) {
wp_schedule_event(time(), 'daily', 'wpbe_cleanup_revisions_event');
}
add_action('wpbe_cleanup_revisions_event', 'wpbe_delete_autosaves_and_revisions');Этот код настроит автоматическую ежедневную очистку автосохранений и ревизий.
Плагины для управления ревизиями и очистки базы
Если не хотите работать с кодом, используйте готовые плагины:
- WP-Optimize — популярный плагин для очистки базы, удаления ревизий, автосохранений, спама и оптимизации таблиц. Позволяет запускать очистку вручную или по расписанию.
- Advanced Database Cleaner — позволяет удалять ревизии, автосохранения, транзиенты, а также оптимизировать базу данных.
- Clearfy Pro (подробнее на WPShop) — оптимизатор, включающий функции по очистке ревизий и автосохранений, а также отключение лишних функций для ускорения сайта.
Как безопасно работать с ревизиями и автосохранениями
Перед удалением обязательно сделайте резервную копию базы данных. Удаление ревизий необратимо, и вы потеряете возможность откатиться к предыдущим версиям.
Ограничение количества ревизий помогает избежать чрезмерного роста базы, но не удаляет уже накопленные версии. Для этого нужна разовая очистка.
Автосохранения удалять можно без опасений, так как WordPress автоматически обновляет их при каждом сохранении.
Итоговые рекомендации
- Периодически удаляйте старые ревизии и автосохранения, особенно на больших и активных сайтах.
- Ограничьте количество ревизий с помощью
define('WP_POST_REVISIONS', 5);вwp-config.php. - Используйте WP-Cron для автоматизации очистки с помощью функции из статьи.
- Применяйте проверенные плагины для удобной очистки и оптимизации базы.
Таким образом вы значительно уменьшите размер базы данных, ускорите работу сайта и избавитесь от ненужных данных без риска потери важных материалов.