Ревизии постов в WordPress — это полезная функция, которая позволяет сохранять историю изменений записей и страниц. Однако со временем количество ревизий может значительно увеличиваться, что негативно сказывается на размере базы данных и скорости работы сайта. В этой статье мы подробно рассмотрим, как удалить лишние ревизии постов в WordPress, оптимизировать базу данных и поддерживать сайт в чистоте.
Что такое ревизии постов и почему их нужно удалять
Ревизии — это автоматические или ручные сохранения версии поста при редактировании. Они хранятся в таблице wp_posts с типом revision. При большом количестве ревизий база данных разрастается, что замедляет запросы, увеличивает время бэкапов и нагрузку на сервер.
Удалять ревизии нужно, чтобы:
- Уменьшить размер базы данных.
- Ускорить работу сайта и админ-панели.
- Снизить нагрузку на сервер.
Но удалять стоит только лишние ревизии, чтобы не потерять важные изменения.
Удаление ревизий через SQL-запросы
Самый быстрый способ очистить ревизии — использовать SQL-запрос, который удалит все или часть ревизий из базы. Запрос можно выполнить через phpMyAdmin или другой инструмент управления базой.
Пример запроса для удаления всех ревизий:
DELETE FROM wp_posts WHERE post_type = 'revision';
Этот запрос удалит все ревизии, что может быть рискованно, если нужна история изменений. Чтобы удалить ревизии старше определённого времени, можно использовать:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < '2023-01-01 00:00:00';
Параметр post_date замените на нужную дату.
Важно: перед выполнением запросов сделайте резервную копию базы.
Удаление ревизий с помощью PHP-кода
Если вы хотите автоматизировать очистку и сделать её безопаснее, можно использовать PHP-код, который удалит ревизии по постам выборочно.
Пример функции для удаления ревизий старше 30 дней:
function wpclean_delete_old_revisions() {
global $wpdb;
$date_limit = date('Y-m-d H:i:s', strtotime('-30 days'));
$query = $wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_date < %s",
$date_limit
);
$deleted = $wpdb->query($query);
return $deleted;
}
// Запуск функции
wpclean_delete_old_revisions();
Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он удалит ревизии, старше 30 дней, оставляя новые для безопасности.
Как ограничить количество ревизий в WordPress
Чтобы не накапливать много ревизий, можно ограничить их количество с помощью константы в wp-config.php. Например, сохранить только последние 5 ревизий:
define('WP_POST_REVISIONS', 5);
Если поставить false, ревизии отключатся полностью, но это не рекомендуется из-за риска потери данных.
Плагины для управления ревизиями в WordPress
Для тех, кто не хочет работать с кодом, есть плагины, позволяющие управлять ревизиями и оптимизировать базу.
- Clearfy Pro — мощный плагин для оптимизации и очистки базы данных, включая удаление ревизий с гибкой настройкой.
- WP-Optimize — бесплатный и простой плагин для очистки базы данных, удаления ревизий и кеша.
- Revision Control — плагин для тонкой настройки количества и управления ревизиями постов.
Как проверить количество ревизий и их влияние на базу
Чтобы понять, насколько ревизии загружают базу, можно выполнить запрос для подсчёта:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';
Для оценки размера в МБ:
SELECT ROUND(SUM(LENGTH(post_content))/1024/1024, 2) AS size_mb FROM wp_posts WHERE post_type = 'revision';
Если размер ревизий большой — их стоит удалить или ограничить.
Автоматизация очистки ревизий через WP-Cron
Чтобы не делать очистку вручную, можно настроить WP-Cron задачу, которая будет периодически удалять старые ревизии.
Пример добавления задачи в functions.php:
if (!wp_next_scheduled('wpclean_delete_old_revisions_event')) {
wp_schedule_event(time(), 'daily', 'wpclean_delete_old_revisions_event');
}
add_action('wpclean_delete_old_revisions_event', 'wpclean_delete_old_revisions');
Так ревизии будут удаляться автоматически каждый день.