wpclean.ru wordpress WPClean.ru

Как удалить лишние ревизии постов в WordPress для оптимизации базы данных

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

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

Ревизии — это автоматические или ручные сохранения версии поста при редактировании. Они хранятся в таблице wp_posts с типом revision. При большом количестве ревизий база данных разрастается, что замедляет запросы, увеличивает время бэкапов и нагрузку на сервер.

Удалять ревизии нужно, чтобы:

  • Уменьшить размер базы данных.
  • Ускорить работу сайта и админ-панели.
  • Снизить нагрузку на сервер.

Но удалять стоит только лишние ревизии, чтобы не потерять важные изменения.

Удаление ревизий через SQL-запросы

Самый быстрый способ очистить ревизии — использовать SQL-запрос, который удалит все или часть ревизий из базы. Запрос можно выполнить через phpMyAdmin или другой инструмент управления базой.

Пример запроса для удаления всех ревизий:

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все ревизии, что может быть рискованно, если нужна история изменений. Чтобы удалить ревизии старше определённого времени, можно использовать:

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < '2023-01-01 00:00:00';

Параметр post_date замените на нужную дату.

Важно: перед выполнением запросов сделайте резервную копию базы.

Удаление ревизий с помощью PHP-кода

Если вы хотите автоматизировать очистку и сделать её безопаснее, можно использовать PHP-код, который удалит ревизии по постам выборочно.

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

function wpclean_delete_old_revisions() {
    global $wpdb;
    $date_limit = date('Y-m-d H:i:s', strtotime('-30 days'));
    $query = $wpdb->prepare(
        "DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_date < %s",
        $date_limit
    );
    $deleted = $wpdb->query($query);
    return $deleted;
}
// Запуск функции
wpclean_delete_old_revisions();

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он удалит ревизии, старше 30 дней, оставляя новые для безопасности.

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

Чтобы не накапливать много ревизий, можно ограничить их количество с помощью константы в wp-config.php. Например, сохранить только последние 5 ревизий:

define('WP_POST_REVISIONS', 5);

Если поставить false, ревизии отключатся полностью, но это не рекомендуется из-за риска потери данных.

Плагины для управления ревизиями в WordPress

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

  • Clearfy Pro — мощный плагин для оптимизации и очистки базы данных, включая удаление ревизий с гибкой настройкой.
  • WP-Optimize — бесплатный и простой плагин для очистки базы данных, удаления ревизий и кеша.
  • Revision Control — плагин для тонкой настройки количества и управления ревизиями постов.

Как проверить количество ревизий и их влияние на базу

Чтобы понять, насколько ревизии загружают базу, можно выполнить запрос для подсчёта:

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Для оценки размера в МБ:

SELECT ROUND(SUM(LENGTH(post_content))/1024/1024, 2) AS size_mb FROM wp_posts WHERE post_type = 'revision';

Если размер ревизий большой — их стоит удалить или ограничить.

Автоматизация очистки ревизий через WP-Cron

Чтобы не делать очистку вручную, можно настроить WP-Cron задачу, которая будет периодически удалять старые ревизии.

Пример добавления задачи в functions.php:

if (!wp_next_scheduled('wpclean_delete_old_revisions_event')) {
    wp_schedule_event(time(), 'daily', 'wpclean_delete_old_revisions_event');
}
add_action('wpclean_delete_old_revisions_event', 'wpclean_delete_old_revisions');

Так ревизии будут удаляться автоматически каждый день.

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

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

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