Ревизии в WordPress — это полезная функция, позволяющая сохранять историю изменений записи или страницы. Однако на крупных бизнес-сайтах с большим объёмом контента ревизии могут накапливаться и существенно раздувать базу данных, что ведёт к снижению производительности. В этой статье разберём, как автоматизировать управление ревизиями с помощью кода и плагинов, а также как оптимизировать их хранение и удаление.
Что такое ревизии в WordPress и зачем их автоматизировать
Ревизии — это промежуточные версии постов, которые WordPress сохраняет автоматически или при нажатии кнопки «Сохранить». Они позволяют откатиться к предыдущему варианту текста, что удобно при редактировании. Но когда количество ревизий достигает сотен и тысяч, это может привести к:
- Увеличению размера базы данных;
- Замедлению запросов к базе;
- Увеличению времени загрузки страниц админки;
- Риску проблем при бэкапах и восстановлении.
Автоматизация удаления старых ревизий и ограничения их количества помогает избежать этих проблем, сохраняя при этом пользу от функции.
Ограничение и удаление ревизий через код
Ограничение числа ревизий на запись
Чтобы задать лимит ревизий, можно использовать константу WPBIZ_LIMIT_REVISIONS в файле wp-config.php или добавить фильтр в functions.php.
// Ограничение ревизий до 5
add_filter('wpbizz_limit_revisions', function() {
return 5;
});
// Или проще через define
define('WP_POST_REVISIONS', 5);
Этот код заставит WordPress сохранять не более 5 ревизий для каждой записи.
Автоматическое удаление старых ревизий
Удалять ревизии можно с помощью WP-CLI, но для автоматизации стоит создать функцию, которая будет запускаться по расписанию (CRON):
function wpbiz_delete_old_revisions() {
global $wpdb;
$limit = 5; // Оставляем 5 последних ревизий
// Получаем ID постов с ревизиями
$posts = $wpdb->get_col("SELECT DISTINCT post_parent FROM $wpdb->posts WHERE post_type = 'revision'");
foreach ($posts as $post_id) {
// Получаем ID ревизий для поста, кроме последних $limit
$revisions = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'revision' AND post_parent = %d ORDER BY post_date DESC LIMIT 999999 OFFSET %d",
$post_id,
$limit
));
if (!empty($revisions)) {
// Удаляем старые ревизии
foreach ($revisions as $rev_id) {
wp_delete_post($rev_id, true);
}
}
}
}
add_action('wpbiz_cron_delete_revisions', 'wpbiz_delete_old_revisions');
// Регистрируем ежедневное событие при активации темы или плагина
if (!wp_next_scheduled('wpbiz_cron_delete_revisions')) {
wp_schedule_event(time(), 'daily', 'wpbiz_cron_delete_revisions');
}
Этот код создаёт ежедневное задание, которое удаляет все ревизии, кроме последних 5 для каждой записи. Это помогает поддерживать базу в порядке без ручного вмешательства.
Использование плагинов для управления ревизиями
Если писать код неудобно, можно воспользоваться специализированными плагинами. Вот несколько популярных решений:
- WP-Optimize — многофункциональный плагин для оптимизации базы данных, который позволяет удалять ревизии и другие ненужные данные одним кликом.
- Advanced Database Cleaner — предлагает тонкую настройку очистки, включая ревизии, спам-комментарии и т.п.
- Clearfy Pro — в числе прочих функций оптимизации включает управление ревизиями с возможностью автоматизации и интеграции с бизнес-сайтом. Подробнее на официальной странице плагина.
Эти плагины подходят для пользователей, которые хотят быстро и безопасно оптимизировать сайт без написания кода.
Рекомендации по работе с ревизиями на бизнес-сайтах
Вот несколько советов, которые помогут грамотно управлять ревизиями:
- Ограничивайте количество ревизий. 3-5 ревизий достаточно для большинства задач.
- Периодически удаляйте старые ревизии. Используйте CRON задачи или плагины.
- Оптимизируйте базу данных. После удаления ревизий запускайте оптимизацию таблиц через phpMyAdmin или плагин.
- Отслеживайте влияние на производительность. Если сайт замедляется, проверьте количество ревизий и размер базы.
- Резервное копирование. Всегда делайте бэкапы перед массовым удалением.
Как интегрировать автоматизацию ревизий с WPRemark для управления контентом
Если на вашем бизнес-сайте установлен плагин WPRemark для обработки форм и отзывов, можно добавить автоматическую очистку ревизий при определённых событиях, например, после обновления контента:
add_action('wpbizz_after_content_update', 'wpbiz_delete_old_revisions');
Это обеспечит чистоту базы и актуальность данных без лишнего администрирования.
Подведение итогов по автоматизации управления ревизиями
Автоматизация управления ревизиями в WordPress — важный шаг для поддержания производительности и стабильности бизнес-сайта. С помощью простых настроек, кода и плагинов вы сможете:
- Ограничить количество ревизий;
- Автоматически удалять старые версии записей;
- Оптимизировать базу данных и ускорить работу сайта;
- Сократить риски при бэкапах и восстановлении.
Используйте приведённые примеры кода и рекомендуемые плагины, чтобы внедрить эффективное управление ревизиями уже сегодня.