В WordPress по умолчанию сохраняется каждая версия записи (ревизия), что позволяет откатиться к предыдущим вариантам текста. Однако со временем это может привести к значительному раздуванию базы данных, особенно на крупных сайтах с большим количеством публикаций и частыми правками. В этой статье мы рассмотрим, как настроить автоматическое удаление старых ревизий постов WordPress, чтобы оптимизировать базу данных и повысить производительность сайта.
Почему важно удалять старые ревизии WordPress
Ревизии — полезная функция, но при активном использовании они могут занимать гигабайты пространства в базе данных. Это замедляет работу сайта, увеличивает время резервного копирования и усложняет администрирование. Удаление ненужных ревизий помогает:
- Уменьшить размер базы данных.
- Повысить скорость работы сайта и админки.
- Облегчить управление резервными копиями.
Однако полностью отключать ревизии не всегда разумно, так как они служат страховкой при ошибках редактирования. Оптимальный подход — ограничить их количество и автоматически удалять слишком старые версии.
Ограничение количества ревизий через wp-config.php
Самый простой способ контролировать ревизии — установить лимит их количества. Для этого в файл wp-config.php добавьте строку:
define('WP_POST_REVISIONS', 5);Это ограничит число ревизий для каждой записи пятью последними версиями. Старые ревизии при этом автоматически удаляться при сохранении новых.
Если указать 0, ревизии будут полностью отключены, но это не рекомендуется без веских причин. Значение false отключает ограничение, то есть сохраняются все ревизии.
Автоматическое удаление ревизий с помощью WP Cron и кода
Для более гибкого управления можно настроить автоматическую очистку ревизий старше определенного времени. Например, удалять ревизии, которым больше 30 дней. Это можно реализовать через планировщик задач WordPress (WP Cron).
Добавьте следующий код в файл вашей темы functions.php или в кастомный плагин:
function wplite_delete_old_revisions() {
global $wpdb;
$days = 30; // Количество дней
$date_threshold = 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_modified < %s",
$date_threshold
));
if (!empty($revisions)) {
foreach ($revisions as $revision_id) {
wp_delete_post($revision_id, true);
}
}
}
// Планируем задачу при активации темы или плагина
if (!wp_next_scheduled('wplite_cron_delete_old_revisions')) {
wp_schedule_event(time(), 'daily', 'wplite_cron_delete_old_revisions');
}
// Подписываемся на событие
add_action('wplite_cron_delete_old_revisions', 'wplite_delete_old_revisions');Этот скрипт ежедневно запускает функцию, которая удаляет все ревизии старше 30 дней. Вы можете изменить период, подставив нужное число в переменную $days.
Такое решение позволяет не только ограничить количество ревизий, но и поддерживать базу данных в чистоте, удаляя неактуальные версии.
Использование плагинов для управления ревизиями
Если вы не хотите писать код, есть готовые решения:
- WP-Optimize — популярный плагин для оптимизации базы данных, который позволяет удалять ревизии, спам-комментарии и другие ненужные данные в один клик. Можно настроить автоматическую очистку по расписанию.
- Revision Control — плагин, который позволяет ограничить количество ревизий для каждого типа записи и даже для отдельных постов.
Плагин Clearfy Pro от WPSHOP предлагает расширенные возможности оптимизации, включая управление ревизиями, очистку базы данных и отключение ненужных функций WordPress. Это удобно для комплексного ухода за сайтом.
Удаление ревизий из базы данных вручную через SQL-запрос
Если нужно разово очистить все ревизии, можно выполнить SQL-запрос напрямую в базе данных через phpMyAdmin или другой инструмент:
DELETE FROM wp_posts WHERE post_type = 'revision';Однако рекомендуется делать резервную копию базы перед такими операциями, чтобы избежать потери важных данных.
Оптимизация таблиц базы данных
После удаления ревизий полезно выполнить оптимизацию таблиц, чтобы освободить место:
OPTIMIZE TABLE wp_posts;Это улучшит производительность и уменьшит размер базы.
Контроль ревизий при использовании плагина WPGPT
Если на вашем сайте установлен плагин WPGPT, который добавляет интеллектуальные функции редактирования и генерации контента, ревизии могут копиться еще активнее из-за частых обновлений.
В этом случае особенно важно настроить автоматическое удаление старых ревизий, чтобы база не раздувалась. Описанные выше методы и код отлично подходят для таких сайтов.
Итоговые рекомендации по работе с ревизиями в WordPress
- Установите ограничение количества ревизий через
wp-config.php. - Настройте ежедневное автоматическое удаление ревизий старше определенного срока через WP Cron.
- Используйте проверенные плагины для оптимизации базы и контроля ревизий.
- Регулярно делайте бэкапы и оптимизируйте таблицы базы данных.
- Особенно внимательно следите за ревизиями на сайтах с активной генерацией контента, например, с плагинами типа WPGPT.
Таким образом, грамотное управление ревизиями поможет поддерживать WordPress-сайт в отличной форме, ускорить работу и избежать проблем с производительностью.