Ревизии записей в WordPress — полезная функция, которая позволяет возвращаться к предыдущим версиям контента. Однако со временем их количество может существенно разрастаться, замедляя работу сайта и увеличивая размер базы данных. В этой статье мы рассмотрим, как удалить старые ревизии без использования плагинов, используя только SQL-запросы и PHP-код. Это позволит вам оптимизировать базу данных и повысить производительность WordPress.
Почему важно удалять старые ревизии WordPress
Каждый раз при сохранении поста WordPress автоматически создает новую ревизию. Со временем их число становится очень большим, особенно на сайтах с большим количеством контента и активными авторами.
Излишнее количество ревизий:
- Занимает дополнительное место в базе данных, что замедляет запросы к ней.
- Увеличивает время резервного копирования и восстановления.
- Может ухудшать работу административной панели, особенно в разделах редактирования записи.
Удаление устаревших ревизий — важный этап оптимизации сайта, который повысит скорость работы и облегчит управление базой данных.
Как узнать количество ревизий в базе данных
Перед удалением полезно понять, сколько ревизий хранится в вашем WordPress. Для этого можно выполнить SQL-запрос через phpMyAdmin или другой инструмент для работы с базой данных:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';Если префикс таблиц у вас отличается от wp_, замените его соответственно.
Этот запрос покажет количество ревизий в вашей базе данных. Если их несколько тысяч и более, стоит задуматься об очистке.
Удаление ревизий через SQL-запросы
Самый простой способ — удалить ревизии напрямую из базы данных с помощью запроса:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удалит все ревизии без исключения. Если хотите удалить только старые ревизии, например, старше 30 дней, используйте более сложный запрос:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);<После выполнения запроса рекомендуется оптимизировать таблицу, чтобы освободить место:
OPTIMIZE TABLE wp_posts;Важно: прежде чем выполнять запросы, обязательно сделайте резервную копию базы данных!
Автоматическое удаление старых ревизий через PHP-функцию
Если вы хотите автоматизировать процесс удаления старых ревизий, можно написать кастомную функцию, которую будете запускать вручную или по расписанию через WP-Cron.
Пример функции для удаления ревизий старше 30 дней:
function wp_lessons_delete_old_revisions() {
global $wpdb;
$days = 30;
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$query = $wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = %s AND post_date < %s",
'revision',
$date_threshold
);
$deleted = $wpdb->query($query);
return $deleted;
}Эту функцию можно вызвать, например, из файла functions.php вашей темы или создать отдельный плагин.
Запуск функции по расписанию (WP-Cron)
Чтобы удалять старые ревизии автоматически, установим WP-Cron задачу на еженедельный запуск:
function wp_lessons_schedule_revision_cleanup() {
if (!wp_next_scheduled('wp_lessons_cleanup_old_revisions')) {
wp_schedule_event(time(), 'weekly', 'wp_lessons_cleanup_old_revisions');
}
}
add_action('wp', 'wp_lessons_schedule_revision_cleanup');
add_action('wp_lessons_cleanup_old_revisions', 'wp_lessons_delete_old_revisions');Теперь функция будет запускаться раз в неделю и удалять ревизии старше 30 дней.
Ограничение количества ревизий для новых записей
Чтобы не накапливать слишком много ревизий, можно ограничить их количество с помощью константы WP_POST_REVISIONS. Добавьте в wp-config.php:
define('WP_POST_REVISIONS', 5);Это позволит хранить только последние 5 ревизий для каждой записи.
Для более гибкого контроля можно использовать фильтр wp_revisions_to_keep:
function wp_lessons_limit_revisions($num, $post) {
return 5; // Максимум 5 ревизий на запись
}
add_filter('wp_revisions_to_keep', 'wp_lessons_limit_revisions', 10, 2);Плагины для управления ревизиями (если все же захотите использовать)
Хотя в статье мы рассматриваем удаление без плагинов, иногда для удобства можно использовать готовые решения. Из качественных плагинов стоит отметить:
- Clearfy Pro — плагин для оптимизации и очистки базы данных, включая ревизии.
- Expert Review — инструмент для аудита сайта, помогает выявить проблемы с базой данных.
Используйте плагины, если не уверены в работе с базой данных напрямую.
Дополнительные советы по оптимизации базы данных WordPress
Удаление ревизий — лишь часть оптимизации. Чтобы поддерживать базу в хорошем состоянии, рекомендуем:
- Регулярно очищать спам и неактивные комментарии.
- Удалять устаревшие транзиенты и временные опции.
- Оптимизировать таблицы базы данных (через SQL-команду
OPTIMIZE TABLEили инструменты хостинга). - Использовать кеширование и CDN для снижения нагрузки.
Эти меры помогут вашему сайту работать быстрее и стабильнее.