Ревизии записей в WordPress — это полезный инструмент для восстановления предыдущих версий страниц и записей. Однако со временем количество ревизий может существенно вырасти, особенно на сайтах с активным редактированием, что приводит к увеличению размера базы данных и снижению производительности. В этой статье мы подробно разберём, как создать автоматическое удаление старых ревизий в WordPress, чтобы поддерживать базу данных в оптимальном состоянии.
Что такое ревизии в WordPress и почему их нужно удалять
Ревизии — это сохранённые версии записей и страниц, которые WordPress создаёт автоматически при каждом сохранении или обновлении контента. Это удобно для восстановления предыдущих вариантов записи, но при большом количестве ревизий база данных может разрастаться, что:
- Увеличивает размер таблицы
wp_posts, что замедляет запросы к базе данных. - Усложняет резервное копирование и восстановление.
- Повышает нагрузку на сервер.
Поэтому регулярное удаление старых ревизий — важная задача для поддержания здоровья сайта.
Как ограничить количество ревизий с помощью wp-config.php
Первый шаг — ограничить количество сохраняемых ревизий, чтобы избежать их чрезмерного накопления в будущем. Для этого добавьте в файл wp-config.php следующую строку:
define('WP_POST_REVISIONS', 5);Здесь число 5 означает, что WordPress будет хранить не более 5 ревизий на каждую запись. Старые версии будут автоматически удаляться при сохранении новых.
Это базовое решение, но что делать с уже накопившимися ревизиями? Для этого нужен скрипт автоматического удаления.
Создание функции для автоматического удаления старых ревизий
Для удаления ревизий можно написать функцию, которая будет запускаться по расписанию и очищать базу от ревизий, старше определённого срока или в количестве, превышающем лимит.
Пример функции для удаления всех ревизий старше 30 дней:
function wplessons_delete_old_revisions() {
global $wpdb;
$days = 30; // Удалять ревизии старше 30 дней
$date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$revisions = $wpdb->get_col(
$wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_date < %s",
$date
)
);
if (!empty($revisions)) {
foreach ($revisions as $revision_id) {
wp_delete_post($revision_id, true); // Полное удаление
}
}
}Эта функция проверяет базу, находит ревизии старше 30 дней и удаляет их без возможности восстановления.
Автоматизация с помощью WP-Cron
Чтобы функция запускалась регулярно, нужно добавить задание в WP-Cron. Пример добавления ежедневного запуска:
function wplessons_schedule_revision_cleanup() {
if (!wp_next_scheduled('wplessons_revision_cleanup_hook')) {
wp_schedule_event(time(), 'daily', 'wplessons_revision_cleanup_hook');
}
}
add_action('wp', 'wplessons_schedule_revision_cleanup');
add_action('wplessons_revision_cleanup_hook', 'wplessons_delete_old_revisions');Такой подход позволит автоматически очищать базу от старых ревизий каждый день.
Использование плагинов для управления ревизиями
Если не хочется писать код, можно воспользоваться готовыми плагинами. Рассмотрим пару популярных вариантов:
WP-Sweep
Плагин позволяет удалять ревизии, спам, черновики и оптимизировать базу данных. Удобен и прост в использовании. После установки перейдите в меню Инструменты > Sweep и выберите Post Revisions для удаления.
Clearfy Pro
Плагин Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wplessons.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskoe-udaleniye-staryh-reviziy-wordpress) предлагает расширенные возможности оптимизации, включая управление ревизиями, отключение REST API, очистку базы данных и многое другое. Особенно полезен для сайтов с большим трафиком и сложной структурой.
Оптимизация базы данных после удаления ревизий
После удаления ревизий рекомендуется оптимизировать базу данных для освобождения места и улучшения производительности. Это можно сделать напрямую через SQL-запрос:
OPTIMIZE TABLE wp_posts;Или воспользоваться плагинами, например, WP-Optimize или упомянутым Clearfy Pro, которые выполняют оптимизацию автоматически.
Практические рекомендации по управлению ревизиями
Для эффективного управления ревизиями придерживайтесь следующих рекомендаций:
- Ограничьте количество ревизий в
wp-config.php, как описано выше. - Настройте автоматическое удаление старых ревизий с помощью WP-Cron.
- Регулярно оптимизируйте базу данных.
- Используйте проверенные плагины для дополнительной очистки и оптимизации.
- Если активно работаете с редакторами, обсуждайте с командой правила сохранения, чтобы не создавать слишком много ревизий.
Следуя этим рекомендациям, вы сможете существенно снизить нагрузку на базу данных и повысить скорость работы вашего сайта.
Заключение
Автоматическое удаление старых ревизий — важная задача для поддержания производительности WordPress-сайта. В статье мы рассмотрели, как ограничить ревизии, создать функцию для удаления старых версий, настроить автоматический запуск через WP-Cron и применить плагины для упрощения процесса. Реализация этих шагов позволит вам контролировать размер базы данных и обеспечить стабильную работу сайта.