Ревизии постов в WordPress — это автоматические сохранения изменений, которые система делает при редактировании контента. Они помогают восстановить предыдущие версии, но при накоплении большого количества ревизий база данных значительно разрастается, что замедляет работу сайта и увеличивает нагрузку на сервер. В этой статье разберёмся, как эффективно удалить ревизии постов, чтобы оптимизировать базу данных и ускорить сайт.
Почему стоит удалить ревизии и как они влияют на производительность
Каждый раз, когда вы нажимаете кнопку «Сохранить» или «Обновить» в редакторе WordPress, создаётся новая ревизия. По умолчанию WordPress хранит все эти версии, что со временем может привести к тысячам записей ревизий в таблице wp_posts. Это увеличивает размер базы данных и затрудняет выполнение запросов, особенно на хостингах с ограниченными ресурсами.
Удаление старых ревизий помогает:
- Сократить размер базы данных;
- Ускорить выполнение запросов;
- Повысить общую производительность сайта;
- Облегчить резервное копирование и восстановление.
Однако важно не удалять все ревизии без разбора, чтобы не потерять важные версии контента.
Как проверить количество ревизий в базе данных
Для начала полезно узнать, сколько ревизий хранится в вашей базе данных. Это можно сделать через phpMyAdmin или с помощью SQL-запроса:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';Если число очень большое (тысячи и более), стоит задуматься об очистке.
Удаление ревизий с помощью SQL-запроса
Самый простой и быстрый способ — выполнить SQL-запрос, который удалит все ревизии:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос полностью очистит таблицу от ревизий. Однако он не обновит связанные с ними метаданные в таблице wp_postmeta. Чтобы удалить и метаданные, можно использовать более сложные запросы, но обычно этого достаточно.
Важно сделать полную резервную копию базы данных перед выполнением таких операций.
Удаление ревизий средствами WordPress: пример функции wp_codex_delete_post_revisions()
Для автоматизации процесса можно написать собственную функцию на PHP, которую добавим в файл functions.php вашей темы или в отдельный плагин. Эта функция удалит ревизии постов по частям, чтобы снизить нагрузку на сервер:
function wp_codex_delete_post_revisions() {
global $wpdb;
$limit = 100;
do {
$revisions = $wpdb->get_col(
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' LIMIT %d",
$limit
);
if (empty($revisions)) {
break;
}
foreach ($revisions as $revision_id) {
wp_delete_post($revision_id, true);
}
} while (count($revisions) === $limit);
}
// Запуск функции вручную
// wp_codex_delete_post_revisions();Функция выбирает по 100 ревизий за раз и удаляет их через стандартную функцию wp_delete_post() с параметром $force_delete = true, чтобы избежать перемещения в корзину. Такой подход корректно удаляет все связанные данные.
Ограничение количества ревизий через wp-config.php
Чтобы избежать накопления большого количества ревизий, можно ограничить их максимальное число в файле wp-config.php добавлением следующей строки:
define('WP_POST_REVISIONS', 5);Эта настройка заставит WordPress хранить не более 5 ревизий для каждого поста. Можно указать любое число — 0 отключит ревизии полностью, но это не рекомендуется, так как потеряется возможность отката изменений.
Использование плагинов для очистки ревизий
Если не хотите работать с кодом, можно воспользоваться специализированными плагинами. Вот несколько популярных и проверенных решений:
- WP-Optimize — мощный плагин для очистки и оптимизации базы данных, включая удаление ревизий постов. Имеет удобный интерфейс и дополнительные функции по оптимизации.
- Advanced Database Cleaner — позволяет удалять ревизии, спам-комментарии и другие ненужные данные. Поддерживает планирование очистки.
- Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wpcodex.ru&utm_medium=article&utm_campaign=kak-udalit-revizii-postov-v-wordpress-chtoby-pochistit-bazu) — плагин от WPSHOP с функциями оптимизации и управления ревизиями, также помогает отключать лишние функции WordPress.
Использование плагинов удобно для тех, кто не хочет рисковать с SQL-запросами и кодом.
Резервное копирование базы данных перед чисткой
Перед удалением ревизий всегда делайте полное резервное копирование базы данных. Это можно сделать через панель хостинга, phpMyAdmin или с помощью плагинов:
- UpdraftPlus — популярный плагин для автоматического создания бэкапов.
- WP Database Backup — простое решение для экспорта и восстановления базы данных.
Это поможет избежать потери данных в случае ошибки.
Как проверить эффективность удаления ревизий
После очистки ревизий можно проверить размер таблицы wp_posts и время отклика сайта. Для этого:
- В phpMyAdmin посмотрите размер таблицы
wp_postsдо и после удаления. - Используйте плагины мониторинга производительности, например, Query Monitor, чтобы увидеть уменьшение времени выполнения запросов.
- Оцените скорость загрузки страниц с помощью инструментов Google PageSpeed Insights или GTmetrix.
Регулярная очистка ревизий и оптимизация базы данных положительно сказываются на скорости и стабильности WordPress-сайта.