В WordPress по умолчанию сохраняется множество ревизий для каждой записи. Это удобно, если нужно вернуться к предыдущей версии, но со временем ревизии накапливаются и занимают значительный объем в базе данных, замедляя работу сайта. В этой статье рассмотрим, как эффективно удалять старые ревизии постов, управлять их количеством и оптимизировать базу данных.
Что такое ревизии постов и почему их стоит контролировать
Ревизии — это автоматически сохраняемые версии записей и страниц при их редактировании. WordPress сохраняет каждое изменение, что позволяет откатиться к предыдущим вариантам. Однако если не контролировать количество ревизий, их может накопиться сотни и тысячи. Это приводит к увеличению размера таблиц wp_posts и wp_postmeta, что замедляет запросы, особенно на больших сайтах.
Контроль ревизий помогает:
- Уменьшить размер базы данных;
- Ускорить работу административной панели и фронтенда;
- Снизить нагрузку на сервер при резервном копировании и оптимизации.
Как ограничить количество ревизий в WordPress
Для ограничения количества ревизий можно добавить в wp-config.php следующую строку:
define('WP_POST_REVISIONS', 3); // Хранить не более 3 ревизийЭто означает, что WordPress будет сохранять максимум 3 ревизии на запись. Более старые ревизии будут удаляться автоматически при сохранении новых.
Если нужно полностью отключить ревизии, можно указать:
define('WP_POST_REVISIONS', false);Но это не рекомендуется, так как теряется возможность отката к предыдущим версиям.
Удаление старых ревизий через SQL-запрос
Если на сайте уже накопились тысячи ревизий, можно удалить их напрямую из базы данных с помощью SQL-запроса. Для этого зайдите в phpMyAdmin или используйте другой инструмент работы с базой и выполните:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удалит все ревизии, но может быть опасен на больших сайтах, так как блокирует таблицы и занимает много времени. Лучше делать это частями или в ночное время.
После удаления желательно выполнить оптимизацию таблиц:
OPTIMIZE TABLE wp_posts;Автоматизация удаления старых ревизий с помощью WPMark функции
Для удобства можно создать функцию в вашем файле functions.php или в собственном плагине, которая будет удалять ревизии по расписанию. Например:
function wpmark_delete_old_revisions() {
global $wpdb;
// Удаляем все ревизии
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}
// Запускаем функцию раз в неделю
if (!wp_next_scheduled('wpmark_weekly_revision_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpmark_weekly_revision_cleanup');
}
add_action('wpmark_weekly_revision_cleanup', 'wpmark_delete_old_revisions');Этот код создаст еженедельное событие, которое будет удалять все ревизии. Если нужна более тонкая очистка, например, удалять ревизии старше 30 дней, код можно доработать следующим образом:
function wpmark_delete_old_revisions_30_days() {
global $wpdb;
$date = date('Y-m-d H:i:s', strtotime('-30 days'));
$wpdb->query(
$wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
$date
)
);
}
add_action('wpmark_weekly_revision_cleanup', 'wpmark_delete_old_revisions_30_days');Плагины для управления ревизиями в WordPress
Если не хотите писать код, можно использовать готовые плагины с удобным интерфейсом:
- WP-Optimize — комплексный плагин для оптимизации базы, включая удаление ревизий и очистку мусора.
- Advanced Database Cleaner — позволяет удалять ревизии, черновики и устаревшие данные с выборочной очисткой.
- Clearfy Pro — плагин с функциями оптимизации, в том числе контролем ревизий, что полезно для сайтов на wpmark.ru. Подробнее о нём — на wpshop.ru.
Что делать после удаления ревизий — оптимизация базы
Удаление ревизий освобождает место, но таблицы могут оставаться фрагментированными. Для улучшения производительности важно регулярно оптимизировать таблицы базы данных. Это можно сделать через phpMyAdmin, выполнив команду:
OPTIMIZE TABLE wp_posts;Или использовать плагин WP-Optimize, который умеет делать это автоматически и безопасно.
Заключение по управлению ревизиями
Контроль ревизий — важный аспект поддержки производительности WordPress-сайта. Ограничение количества ревизий, регулярное удаление старых и оптимизация базы данных помогут избежать замедлений и снизить нагрузку на сервер.
Для сайтов на wpmark.ru рекомендуем использовать встроенные функции и проверенные плагины, например Clearfy Pro, который сочетается с другими инструментами оптимизации и автоматизации.