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