wpcontrol.ru wordpress WPControl.ru

Автоматическое удаление старых ревизий записей в WordPress с помощью Clearfy Pro

В 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:

  1. Перейдите в раздел «Оптимизация» –> «Очистка базы данных».
  2. Включите опцию «Автоматическое удаление ревизий».
  3. Настройте периодичность удаления — например, еженедельно или ежемесячно.
  4. Выберите, какие ревизии удалять — например, все старше 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 предоставляет простой и безопасный способ автоматизации этого процесса, а кастомный код даёт возможность гибко настраивать очистку под свои нужды. Используйте оба подхода для поддержания здоровья вашего сайта.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙