WordPress по умолчанию сохраняет каждое изменение записи или страницы в виде отдельной ревизии. Это удобно для восстановления предыдущих версий, но с течением времени количество ревизий может значительно разрастись. Они занимают место в базе данных и могут замедлять работу сайта. В этой статье разберём, как удалить старые версии постов программно, а также какие плагины помогут автоматизировать процесс.
Что такое ревизии в WordPress и зачем их удалять
Ревизии — это автоматические или ручные сохранённые версии постов и страниц. Каждый раз, когда вы нажимаете «Сохранить» или обновляете запись, WordPress создаёт копию предыдущей версии. Это защищает от потери данных, но при активной работе с контентом ревизий может накопиться сотни или тысячи.
Из-за этого растёт размер таблицы wp_posts и связанных с ней индексов, что влияет на скорость запросов и резервного копирования базы данных. Особенно это заметно на сайтах с большим количеством контента и активных редакторах.
Удаление старых ревизий помогает:
- Снизить размер базы данных;
- Ускорить работу сайта;
- Упростить резервное копирование;
- Сделать администрирование базы данных удобнее.
Как программно удалить все старые ревизии WordPress
Для удаления ревизий можно использовать SQL-запросы или PHP-код в functions.php вашей темы или в отдельном плагине. Ниже представлен удобный пример функции, которая удаляет все ревизии и выводит количество удалённых записей.
function wphow_delete_old_revisions() {
global $wpdb;
// Получаем количество ревизий
$count = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = 'revision'");
if ( $count > 0 ) {
// Удаляем все ревизии
$deleted = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
// Оптимизируем таблицу
$wpdb->query("OPTIMIZE TABLE {$wpdb->posts}");
return "Удалено ревизий: " . $deleted;
} else {
return 'Ревизий для удаления не найдено.';
}
}
// Пример вызова функции и вывода результата
add_action('admin_notices', function() {
if ( isset($_GET['wphow_clean_revisions']) ) {
echo '<div class="notice notice-success is-dismissible"><p>' . wphow_delete_old_revisions() . '</p></div>';
}
});Эту функцию лучше запускать однократно, например, добавив в ссылку на админке параметр ?wphow_clean_revisions=1, чтобы не удалять ревизии постоянно.
Как ограничить количество ревизий для новых постов
Чтобы WordPress не создавал слишком много ревизий, можно ограничить их число через файл wp-config.php. Добавьте туда строку:
define('WP_POST_REVISIONS', 3);Так WordPress будет хранить не более трёх последних версий каждого поста, автоматически удаляя старые.
Плагины для управления ревизиями в WordPress
Если хотите управлять ревизиями без кода, рекомендуем следующие плагины:
- WP-Optimize — мощный инструмент для очистки базы данных, удаления ревизий, спама, оптимизации таблиц.
- Advanced Database Cleaner — позволяет удалять ревизии, автосохранения, мусорные данные и планировать очистки.
- Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wphow.ru&utm_medium=article&utm_campaign=kak-udalit-starye-versii-postov-v-wordpress-cherez-kod) — комплексный плагин для оптимизации и ускорения сайта, включая очистку ревизий.
Эти плагины удобны тем, что дают гибкие настройки и позволяют выполнять очистку в несколько кликов, а также планировать её автоматически.
Резервное копирование перед удалением ревизий
Перед удалением ревизий настоятельно рекомендуем сделать полную резервную копию базы данных. В случае ошибки или необходимости восстановления старых версий вы всегда сможете вернуть данные.
Для бэкапа подойдёт плагин UpdraftPlus или ручное сохранение дампа через phpMyAdmin.
Оптимизация после удаления ревизий
После удаления ревизий желательно оптимизировать таблицы базы данных, чтобы вернуть свободное место и повысить производительность запросов. В PHP-коде выше показано использование запроса OPTIMIZE TABLE. Если вы используете плагин WP-Optimize, оптимизация выполняется автоматически после очистки.
Также полезно периодически чистить транзиенты, кэш и ненужные данные, чтобы поддерживать базу в хорошем состоянии.
Итоговые рекомендации по работе с ревизиями в WordPress
- Ограничьте количество ревизий через
wp-config.phpили плагин Clearfy Pro. - Удаляйте старые ревизии регулярно с помощью кода или плагинов.
- Перед очисткой делайте резервную копию базы.
- Оптимизируйте таблицы базы данных после удаления.
- Используйте проверенные плагины для автоматизации очистки и оптимизации.
Соблюдая эти рекомендации, вы значительно уменьшите нагрузку на базу данных и ускорите работу сайта на WordPress.