В WordPress ревизии записей помогают сохранить историю изменений, но с течением времени их количество может сильно увеличиться и замедлить работу сайта, а также увеличить размер базы данных. В этой статье мы рассмотрим, как автоматически удалять старые ревизии записей, используя плагин Clearfy Pro, а также реализуем кастомное решение с помощью кода для более гибкого контроля.
Почему стоит удалять старые ревизии записей в WordPress
Ревизии — это полезный инструмент, но когда их становится слишком много, они:
- Замедляют работу базы данных, особенно при большом объёме записей.
- Увеличивают размер резервных копий.
- Могут привести к проблемам с производительностью хостинга.
Удаление устаревших ревизий позволяет поддерживать базу данных в оптимальном состоянии без потери нужных данных.
Типичные методы управления ревизиями
В WordPress можно ограничить количество ревизий или отключить их полностью, добавив в wp-config.php строку:
define('WP_POST_REVISIONS', 3); // сохранять максимум 3 ревизииИли полностью отключить ревизии:
define('WP_POST_REVISIONS', false);Однако это не удаляет уже существующие ревизии в базе. Для их удаления нужны дополнительные действия.
Использование плагина Clearfy Pro для автоматического удаления ревизий
Плагин Clearfy Pro предлагает удобные инструменты для оптимизации и очистки базы данных, включая автоматическое удаление старых ревизий.
Настройка автоматической очистки в Clearfy Pro
После установки и активации Clearfy Pro:
- Перейдите в раздел «Оптимизация» –> «Очистка базы данных».
- Включите опцию «Автоматическое удаление ревизий».
- Настройте периодичность удаления — например, еженедельно или ежемесячно.
- Выберите, какие ревизии удалять — например, все старше 30 дней.
Такая настройка позволит плагину самостоятельно поддерживать базу данных в порядке без вашего вмешательства.
Преимущества использования Clearfy Pro
- Простой интерфейс и минимальные настройки.
- Безопасность — плагин делает резервные копии перед очисткой.
- Широкий функционал для оптимизации сайта.
Однако если нужна более тонкая настройка или интеграция с другими функциями, можно написать собственный код.
Кастомное решение: автоматическое удаление ревизий через WP-Cron и PHP
Если вы предпочитаете контролировать процесс удаления ревизий самостоятельно, можно создать функцию для очистки старых ревизий и запускать её по расписанию через WP-Cron.
Создание функции удаления старых ревизий
function wpcontrol_delete_old_revisions() { global $wpdb; // Количество дней, старше которых ревизии будут удалены $days = 30; $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days')); // Удаляем ревизии, созданные ранее указанной даты $deleted = $wpdb->query( $wpdb->prepare(' DELETE FROM ' . $wpdb->posts . ' WHERE post_type = %s AND post_modified < %s', 'revision', $date ) ); if ($deleted !== false) { error_log("wpcontrol: Удалено " . $deleted . " старых ревизий."); }}В этой функции мы используем прямой SQL-запрос для удаления всех ревизий, изменённых более 30 дней назад. Это эффективно и быстро.
Регистрация задачи WP-Cron для автоматического запуска
function wpcontrol_schedule_revision_cleanup() { if (!wp_next_scheduled('wpcontrol_revision_cleanup_event')) { wp_schedule_event(time(), 'daily', 'wpcontrol_revision_cleanup_event'); }}add_action('wpcontrol_revision_cleanup_event', 'wpcontrol_delete_old_revisions');add_action('wp', 'wpcontrol_schedule_revision_cleanup');Этот код регистрирует задачу, которая будет запускаться ежедневно и вызывать нашу функцию очистки.
Как отключить задачу, если потребуется
function wpcontrol_unschedule_revision_cleanup() { $timestamp = wp_next_scheduled('wpcontrol_revision_cleanup_event'); if ($timestamp) { wp_unschedule_event($timestamp, 'wpcontrol_revision_cleanup_event'); }}Можно вызвать эту функцию вручную или при деактивации плагина, чтобы отменить расписание.
Дополнительные советы по работе с ревизиями
Ограничение ревизий через фильтр
Альтернативно, можно ограничить количество ревизий для каждого поста, добавив фильтр в functions.php темы:
function wpcontrol_limit_revisions($num, $post) { return 5; // сохранять максимум 5 ревизий на запись}add_filter('wp_revisions_to_keep', 'wpcontrol_limit_revisions', 10, 2);Это поможет предотвратить накопление большого количества ревизий в будущем.
Резервное копирование перед удалением
Перед массовым удалением ревизий всегда делайте резервную копию базы данных. Это убережёт вас от потери важных данных в случае ошибок.
Заключение
Автоматическое удаление старых ревизий записей — важный шаг для оптимизации производительности WordPress. Плагин Clearfy Pro предоставляет простой и безопасный способ автоматизации этого процесса, а кастомный код даёт возможность гибко настраивать очистку под свои нужды. Используйте оба подхода для поддержания здоровья вашего сайта.