wplearn.ru wordpress WP Learn

Автоматическое удаление старых ревизий постов в WordPress для оптимизации базы данных

Ревизии постов — полезная функция WordPress, которая позволяет сохранять несколько версий записей и страниц. Но со временем их количество может значительно вырасти, занимая место в базе данных и замедляя сайт. В этой статье мы подробно рассмотрим, как настроить автоматическое удаление старых ревизий, чтобы оптимизировать базу данных и поддерживать производительность WordPress.

Что такое ревизии в WordPress и почему их нужно удалять

Ревизии — это сохранённые версии постов и страниц, которые WordPress автоматически сохраняет при редактировании. Это удобно, если нужно откатиться к предыдущему варианту текста. Однако с ростом количества контента ревизии складываются в огромный объём данных в таблице wp_posts с типом revision.

Большое количество ревизий приводит к:

  • Увеличению размера базы данных, что повышает время выполнения запросов и резервного копирования.
  • Замедлению работы административной панели, особенно на страницах редактирования постов.
  • Потере контроля над версионностью, если ревизий слишком много.

Поэтому важно регулярно удалять старые ненужные ревизии, сохраняя только актуальные версии.

Как ограничить количество ревизий стандартными методами WordPress

Первый шаг — ограничить число ревизий, которые WordPress будет сохранять для каждого поста. Для этого в wp-config.php добавьте строку:

define('WP_POST_REVISIONS', 3);

Это ограничит количество ревизий тремя на пост. Старые ревизии будут автоматически удаляться при сохранении новых.

Если хотите полностью отключить ревизии, установите значение в false:

define('WP_POST_REVISIONS', false);

Однако полностью отключать ревизии не рекомендуется, так как это снижает безопасность редактирования.

Удаление ревизий через плагин WP-Optimize

Плагин WP-Optimize — мощный инструмент для очистки и оптимизации базы данных. Он позволяет удалить все ревизии за пару кликов, а также настроить автоматическую очистку по расписанию.

После установки и активации перейдите в раздел "WP-Optimize → Database" и отметьте пункт "Remove post revisions". Затем нажмите "Run all selected optimizations".

Плагин также поддерживает планировщик задач для регулярной очистки, что избавит от необходимости делать это вручную.

Автоматическое удаление ревизий с помощью собственного кода

Если не хотите использовать плагины, можно добавить автоматическую очистку ревизий с помощью PHP-кода в файл functions.php вашей темы или в собственный плагин.

Пример функции для удаления ревизий старше 30 дней:

function wplearn_delete_old_post_revisions() {
    global $wpdb;
    $days = 30;
    $date = 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
    ));
    if (!empty($revisions)) {
        foreach ($revisions as $revision_id) {
            wp_delete_post($revision_id, true);
        }
    }
}
add_action('wplearn_daily_cleanup_event', 'wplearn_delete_old_post_revisions');

// Создаем ежедневное событие планировщика
if (!wp_next_scheduled('wplearn_daily_cleanup_event')) {
    wp_schedule_event(time(), 'daily', 'wplearn_daily_cleanup_event');
}

Этот код создаёт ежедневное событие, которое удаляет ревизии, созданные более 30 дней назад. Использование планировщика WordPress (WP-Cron) позволяет автоматизировать процесс без вмешательства администратора.

Настройка интервала и времени выполнения

Интервал daily означает один раз в сутки. Если нужно изменить частоту, можно добавить собственный интервал в планировщик:

function wplearn_custom_cron_intervals($schedules) {
    $schedules['weekly'] = [
        'interval' => 604800, // 7 дней в секундах
        'display' => __('Once Weekly')
    ];
    return $schedules;
}
add_filter('cron_schedules', 'wplearn_custom_cron_intervals');

И затем использовать 'weekly' вместо 'daily' в wp_schedule_event.

Дополнительные советы по работе с ревизиями

Оптимизация базы данных после удаления ревизий

После массового удаления ревизий рекомендуется оптимизировать таблицы базы данных для освобождения занятого места и повышения скорости запросов. Это можно сделать через phpMyAdmin или с помощью плагина WP-Optimize, который умеет выполнять оптимизацию одним кликом.

Мониторинг количества ревизий и размера базы данных

Для контроля состояния можно использовать плагин Query Monitor. Он показывает, сколько ревизий и других типов постов хранится в базе, а также время выполнения запросов.

Использование плагина Clearfy Pro для управления ревизиями и оптимизации

Плагин Clearfy Pro предлагает расширенные возможности управления ревизиями, включая отключение их создания, автоматическую очистку и оптимизацию базы данных. Это удобное решение для тех, кто хочет минимизировать использование ресурсов без написания кода.

Clearfy Pro позволяет настроить удаление ревизий по расписанию и исключения для определённых типов постов, что делает его более гибким, чем стандартные инструменты WordPress.

×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙